mysql:如何从两个表中进行选择
我有两个表具有相同的键id,但其中一个表的记录比另一个多,因此内部联接不起作用。 我的查询结果仅显示两个表的公共记录:mysql:如何从两个表中进行选择,mysql,sql,Mysql,Sql,我有两个表具有相同的键id,但其中一个表的记录比另一个多,因此内部联接不起作用。 我的查询结果仅显示两个表的公共记录: t1: --------------------- id, data ---------------------- 1,aaa 2,bbb 4,ccc t2: ------------------- id ------------------- 1 2 3 4 5 jo
t1:
---------------------
id, data
----------------------
1,aaa
2,bbb
4,ccc
t2:
-------------------
id
-------------------
1
2
3
4
5
join result :
-------------------
1,aaa
2,bbb
3,null
4,ccc
5,null
此查询不执行以下任务:
$query=" SELECT t2.id, t1.data FROM table1 t1
INNER JOIN table2 t2
ON t1.id = t2.id
ORDER BY t2.id " ;
请试试这个
$query=" SELECT t2.id, t1.data FROM table1 t1
RIGHT JOIN table2 t2
ON t1.id = t2.id
ORDER BY t2.id" ;
好的,您提供的查询在内部联接操作中工作正常
SELECT t2.id, t1.data
FROM table1 t1
INNER JOIN table2 t2
ON t1.id = t2.id
ORDER BY t2.id
将产生:
| id | data |
| 1 | aaa |
| 2 | bbb |
| 4 | ccc |
| id | data |
| 1 | aaa |
| 2 | bbb |
| 3 | (null) |
| 4 | ccc |
| 5 | (null) |
如果要查看第二个表中的所有值,则需要对table2表执行左联接操作
将产生:
| id | data |
| 1 | aaa |
| 2 | bbb |
| 4 | ccc |
| id | data |
| 1 | aaa |
| 2 | bbb |
| 3 | (null) |
| 4 | ccc |
| 5 | (null) |
提示:左连接,但t2应该是第一个表。这与jQuery无关。在为你的问题添加标签时请小心。此查询不起作用,这是一个错误的解释。你有错误吗?太多行了?太少了?虽然这样做有效,但我总是避免右外部联接,而是重写查询以使用左外部联接。右外部联接的可读性不如左外部联接。与其尝试这个,我希望得到一些解释,例如,您需要一个外部联接,以便保留t1中不匹配的t2行。只是与预期的结果相比,此结果中缺少两行-但这就是内部联接的工作原理。哈哈,不过我已经更新了答案。