忽略

时间:2015-09-28 06:01:35

标签: php mysql sql

假设我有以下表格

GUYS

| 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为ON SHIRT的GUYS

想知道是否有可能获取所有与SHIRT无关的GUYS?

实现这样的结果,

| ID         | color       |
|:-----------|------------:|
| 1          |         red |   
| 1          |         red |
| 2          |             |
| 3          |         red |    
| 3          |         red |    
| 3          |         red |

2 个答案:

答案 0 :(得分:5)

你的WHERE是严格的:

没有衬衫的男士不能穿红色衬衫; - )

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

答案 1 :(得分:3)

你对颜色的条件实际上是一个“加入条件”而不是“过滤器” - “只要他们是红色的,就给我所有人加入他们的衬衫”:

namespace3 = root22.xpath('.//xt:envValueType', namespaces=NSMAP)

http://sqlfiddle.com/#!9/9ea10/2