我有一个基表和许多查询结果
首先是基本清单:
a, b
name1, type1
name2, type2
name3, type3
name4, type4
b是ID
其他是这样的SELECT结果(计算其他表中的类型)
null, 5
type1, 3
type4, 3
null为5,因为在另一个表中,许多行没有任何类型
如果我使用LEFT JOIN
type1, 3
type4, 3
而不是null行,因为null不包含在基本列表中
我做了一个技巧:
SELECT a, b
FROM table1
UNION
SELECT "none", null
FROM table1
结果:
name1, type1
name2, type2
...
name4, type4
none, null
但如果我尝试LEFT JOIN,则无需更改
name1, type1, 3
name2, type2, null
...
name4, type4, 3
none, null, null
如何将null,5值放在连接结果中? (好吧,我可以使用RIGHT和LEFT OUTER JOIN,但我有很多结果表,我想加入基本列表)
非常感谢,对不起我的英语很差:)。
答案 0 :(得分:0)
我解决了这个问题。 我读了mysql文档,使用nulls https://dev.mysql.com/doc/refman/5.0/en/working-with-null.html “您不能使用算术比较运算符(如=,<或<>)来测试NULL。” 所以我改变了ON子句:
SELECT * FROM
(SELECT... ) a
LEFT JOIN
(SELECT... ) b
ON a.id = b.id OR (a.id IS NULL AND b.id IS NULL)
和b select
加入a select
,空值为