Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询不同表中的数据_Sql_Postgresql - Fatal编程技术网

Sql 查询不同表中的数据

Sql 查询不同表中的数据,sql,postgresql,Sql,Postgresql,我在我的postgres数据库上使用了如下查询: SELECT TableA.id FROM TableA , TableB WHERE TableA.id = 100; 每个TableA.id都是唯一的。这是一个自动增量,我得到的结果不止一个。我在这里遗漏了什么吗?您正在进行交叉连接-有效地将表B中的每一行与表a中的单行进行对比。如果您也从TableB中选择了一些内容,这将更加明显:您当前没有从TableB中选择任何内容这一事实不会阻止TableA、TableB对在投影之前成为联接的结果。您

我在我的postgres数据库上使用了如下查询:

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

每个TableA.id都是唯一的。这是一个自动增量,我得到的结果不止一个。我在这里遗漏了什么吗?

您正在进行交叉连接-有效地将表B中的每一行与表a中的单行进行对比。如果您也从TableB中选择了一些内容,这将更加明显:您当前没有从TableB中选择任何内容这一事实不会阻止TableA、TableB对在投影之前成为联接的结果。

您需要联接:

SELECT TableA.ID from TableA
INNER JOIN TableB 
ON TableB.TableAID = TableA.ID 
WHERE TableA.ID = 100

表A和表B之间的关系是什么

你可能需要这样做

其中TableA.id=100
TableB.TableA_Id=TableA.Id

您从TableA得到一行,但从TableB得到所有行。也许你的意思是:

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

在where子句之前需要连接:

INNER JOIN TableB ON TableA.Id = TableB.Id