Php 忽略何处并按顺序排列优先级

Php 忽略何处并按顺序排列优先级,php,mysql,sql,Php,Mysql,Sql,假设我有下面这些表格 伙计们 | ID | |:-----------| | 1 | | 2 | | 3 | 衬衫 | ID | GUYS_ID | color | |:-----------|------------:|:------------:| | 1 | 1 | red | 2 |

假设我有下面这些表格

伙计们

| 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”-“给我所有的人,只有当他们是红色的时候才加入他们的衬衫”:


您对颜色的条件实际上是一个“加入条件”,而不是一个“where过滤器”-“给我所有人,只有当他们是红色的时候才加入他们的衬衫”:


查看“外部连接”。不要标记未涉及的产品。。。你真的对MySQL、MS SQL Server和Postgresql有问题吗?看看“外部连接”。不要标记未涉及的产品。。。你真的对MySQL、MS SQL Server和Postgresql有问题吗?这不是答案(=解决方案),而是产生相同(错误)结果的另一种方法@Shnugo将额外条件放入外部联接并没有错,它会产生想要的结果。@Shnugo fiddle包含两个查询,第一个是这个修改后的查询,它返回额外的行
(2,NULL)
您的
为NULL
变量有。对不起,您的答案完全正确,你不应该这么快地输入:-)我这边的+1。这不是答案(=解决方案),而是产生相同(错误)结果的另一种方式@Shnugo将额外条件放入外部联接并没有错,它会产生想要的结果。@Shnugo fiddle包含两个查询,第一个是这个修改后的查询,它返回额外的行
(2,NULL)
您的
为NULL
变量有。对不起,您的答案完全正确,一个人不应该打字这么快:-)我这边+1。
SELECT a.id, b.color 
FROM GUYS a 
LEFT JOIN SHIRT b ON a.ID=b.GUYS_ID 
WHERE b.color IS NULL OR b.color='red'
ORDER BY a.id ASC
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;