MYSQL - 加入不同的条件(为null与is not null)表,而工会
问题描述:
table1
---+---------
id | value
---+---------
1 | (NULL)
2 | 'string'
3 | (NULL)
table2
---+-----------
id | table1_id
---+-----------
1 | 3
我可以得到我的结果通过执行MYSQL - 加入不同的条件(为null与is not null)表,而工会
select table1.id from table1 where table1.value is not null
union
select table1.id from table1 right join table2 on table1.id=table2.table1_id
所以我需要得到的是
---+--
id |
---+--
2 |
3 |
但我不能使用工会,因为我应该使用yii1.1 CDbCriteria不支持工会 我试过不同的连接类型,但没有结果。
答
你可以写你的查询使用LEFT这样JOIN:
SELECT table1.id
FROM
table1 LEFT JOIN table2
ON table1.id=table2.table1_id
WHERE
table1.value IS NOT NULL
or table2.table1_id IS NOT NULL
,因为你用的是LEFT JOIN,table2.table1_id将为空当连接不会成功。
答
为什么你需要一个连接所有,这个简单的查询应该这样做:
从表1,其中值不为空或ID选择ID(选择从表2 不同table1_id)
很酷,它的工作原理!谢谢! –