查询来自不同表的数据

时间:2008-11-18 15:02:45

标签: sql postgresql

我在postgres数据库中使用这样的查询:

SELECT TableA.id FROM TableA , TableB WHERE TableA.id = 100;

每个TableA.id都是唯一的(它是一个自动增量),我得到的结果超过1。我在这里错过了什么吗?

5 个答案:

答案 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