我正在尝试对表进行选择查询,然后再进行内部联接,以将所有者的数据链接到猫
ownercat在链接到ownerinfo id的id上使用外键
{:scopes #js ["https://www.googleapis.com/auth/userinfo.profile" "https://www.googleapis.com/auth/userinfo.email"], :serverAuthCode nil, :idToken "eyJhb...", :user #js {:photo "http://photo.jpg", :email "fubar@fu.bar", :familyName "Bar", :givenName "Fu", :name "Fu Bar", :id "1234"}}
我得到以下错误: 错误代码:1052。where子句中的列“ ID”含糊不清0.0014秒
删除concat区别语句仍然会产生相同的错误,我不确定如何解决此问题
答案 0 :(得分:2)
您需要定义ID
子句中的WHERE
来自哪个表(可以使用别名)。其次,在使用GROUP_CONCAT
时,查询中应该包含GROUP BY
:
SELECT
oi.ID,
oi.First_Name,
oi.Last_Name,
oi.Phone,
oi.AddrL1,
oi.AddrL2,
oi.AddrL3,
oi.PostCode,
GROUP_CONCAT(DISTINCT oc.Chip_ID)
FROM OWNERINFO oi
INNER JOIN OWNERCAT oc ON oc.ID=oi.ID
WHERE oi.ID = 1
GROUP BY oi.ID
答案 1 :(得分:1)
问题出在WHERE
子句中:ID
模棱两可,因为该列在两个表中均可用。
您可能会认为,由于您正在联接ID
上的表,因此数据库能够判断出它具有相同的值,但实际上并非如此。
因此只需限定WHERE
子句中的列即可,即更改此内容:
WHERE ID = 1
要:
WHERE OWNERINFO.ID = 1
或等效的内容:
WHERE OWNERCAT.ID = 1
还请注意,您的查询使用GROUP_CONCAT()
,这是一个聚合函数。这意味着您需要一个GROUP BY
子句,该子句应列出所有未聚合的列(即,除GROUP_CONCAT()
内的列以外的 all 列)。