MySql始终在select语句中返回记录

时间:2015-11-01 18:21:29

标签: mysql

您好我在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   |
+--------+
|        |
+--------+

2 个答案:

答案 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行。