Mysql离开了join和null

时间:2015-08-28 14:21:44

标签: mysql null left-join

我有一个基表和许多查询结果

首先是基本清单:

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,但我有很多结果表,我想加入基本列表)

非常感谢,对不起我的英语很差:)。

1 个答案:

答案 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,空值为