You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python SQLite使用INNER JOIN关联两表时如何正确获取ROWID

问题根源
  • 多表关联场景下,rowid是SQLite中每张表自带的隐藏属性字段,你原语句未指定rowid所属的表,SQLite无法判断需要返回table1还是table2的rowid,会触发字段歧义报错
  • 你原语句WHERE条件中的name字段也未指定所属表,同样可能因为字段重名导致执行失败
正确写法

如果你需要获取table1的rowid以及关联后的number列,调整后的SQL语句如下:

SELECT table1.rowid, table2.number
FROM table1
INNER JOIN table2
ON table1.name = table2.ID
WHERE table1.name = "name"

如果你需要获取table2的rowid,只需要把SELECT后的table1.rowid修改为table2.rowid即可。如果需要返回两张表的全部字段,可以把查询字段替换为table1.rowid, table1.*, table2.*。

注意事项
  • 所有多表关联查询的场景,都建议给所有查询字段、条件字段加上表名前缀,可以完全避免字段重名导致的歧义问题
  • 如果你在建表时指定了WITHOUT ROWID参数,表默认的rowid字段会被取消,需要你自行设置主键作为唯一行标识

内容的提问来源于stack exchange,提问作者Hosehose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:06:05