假设,我有下列表格
伙计们

| 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/

10-12 14:15
查看更多