我有 2 个表,TA
并且TB
:
TA
--------
id name
1 a
2 b
3 c
4 d
5 e
6 f
TB
--------
id p_id name
1 1 a
2 1 b
3 1 c
4 2 a
5 2 b
6 2 d
我需要:如果p_id = 1
那么:
id name match
1 a 1
2 b 1
3 c 1
4 d 0
5 e 0
6 f 0
如果p_id = 2
那么:
id name match
1 a 1
2 b 1
3 c 0
4 d 1
5 e 0
6 f 0
您需要使用 LEFT OUTER JOIN 来实现此目的:
SQL小提琴
MySQL 5.5.32 架构设置:
查询 1:
结果:
查询 2:
结果:
感兴趣的查询包含在过程中
test
。这使得使用 SQLFiddle 更容易一些。但是您当然可以在过程之外使用查询。但是,请注意与参数值的比较是 LEFT JOIN 评估的一部分。有关 JOIN 的更多信息,请在此处查看我的 JOIN 系列:http: //sqlity.net/en/1146/a-join-a-day-introduction/
该系列是关于 SQL Server 的。但是大多数概念和大部分语法也适用于 MySQL。