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;