假设,我有下列表格
伙计们
| ID |
|:-----------|
| 1 |
| 2 |
| 3 |
衬衫
| ID | GUYS_ID | color |
|:-----------|------------:|:------------:|
| 1 | 1 | red
| 2 | 1 | red
| 3 | 3 | red
| 4 | 3 | red
| 5 | 3 | red
我使用此查询加入这些表
SELECT a.id, b.color
FROM GUYS a
LEFT JOIN SHIRT b
ON a.ID=b.GUYS_ID
WHERE b.color='red'
ORDER BY a.id ASC;
这只会让衬衫上有身份证的人
不知道能不能把所有和衬衫没关系的人都找来?
为了达到这样的效果,
| ID | color |
|:-----------|------------:|
| 1 | red |
| 1 | red |
| 2 | |
| 3 | red |
| 3 | red |
| 3 | red |
最佳答案
你在颜色上的条件实际上是“连接条件”而不是“where filter”——“给我所有的人,只有在他们是红色的时候才能连接他们的衬衫”:
SELECT a.id, b.color
FROM GUYS a
LEFT JOIN SHIRT b
ON a.ID=b.GUYS_ID AND b.color='red'
ORDER BY a.id ASC;
http://sqlfiddle.com/#!9/9ea10/2
关于php - 忽略位置并按顺序排列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32816557/