我在postgres数据库中使用这样的查询:
SELECT TableA.id FROM TableA , TableB WHERE TableA.id = 100;
每个TableA.id都是唯一的(它是一个自动增量),我得到的结果超过1。我在这里错过了什么吗?
答案 0 :(得分:7)
您需要加入:
SELECT TableA.ID from TableA
INNER JOIN TableB
ON TableB.TableAID = TableA.ID
WHERE TableA.ID = 100
答案 1 :(得分:6)
你正在进行交叉连接 - 有效地将TableB中的每一行对照TableA中的单行。如果你从TableB中选择一些东西,这将更加明显:)你当前没有从TableB中选择任何东西这一事实不会阻止(TableA,TableB)对作为连接的结果,在投影之前
答案 2 :(得分:3)
您从TableA
获取了一行,但TableB
中的所有行。也许你的意思是:
SELECT TableA.id FROM TableA, TableB WHERE TableA.id=TableB.id AND TableA.id = 100
答案 3 :(得分:1)
这是TableA和TableB之间的关系?
你可能需要做这样的事情
TableA.id = 100 并且TableB.TableA_Id = TableA.id
答案 4 :(得分:0)
您需要在where子句之前加入:
INNER JOIN TableB ON TableA.Id = TableB.Id