您好我在Mysql中使用leftjoin并且我正在寻找返回记录的方法,例如我有它,
SELECT table1.value
FROM table1
LEFT OUTER JOIN table2
ON `table1`.`id`=`table2`.`id`
where `table1`.`id`='this value no exist'
这没有任何回报,但我想要一个null或"" ,
喜欢它
+--------+
| table1 |
+--------+
| null |
+--------+
| |
+--------+
答案 0 :(得分:2)
一种方法是使用聚合来获得具有所有可能值的一行。如果没有,则值为NULL
:
SELECT GROUP_CONCAT(table1.value)
FROM table1 LEFT OUTER JOIN
table2
ON `table1`.`id` = `table2`.`id`
where `table1`.`id` = 'this value no exist';
如果您只期望一个值,那么这将始终返回具有该值的行或NULL
。
LEFT OUTER JOIN
在此查询中完全没用,除非您正在寻找重复匹配(我怀疑)。它既不用于过滤也不用于获取列。
由于不需要LEFT OUTER JOIN
,您也可以按照自己的意愿行事:
SELECT table1.value
FROM table1
WHERE table1.id = 'this value no exist'
UNION ALL
SELECT NULL
FROM table1
WHERE NOT EXISTS (SELECT 1 FROM table1 WHERE table1.id = 'this value no exist');
请注意,LEFT OUTER JOIN
在您的查询中是多余的。
答案 1 :(得分:0)
使用聚合函数,例如MAX
:
SELECT MAX(table1.value)
...etc.
保证始终只返回1行。