2015-11-01 52 views
0

您好IM與在MySQL leftjoin和進出口工作尋找例如回報記錄的方式,我有它,的MySql總是返回記錄SELECT語句

SELECT table1.value 
FROM table1 
LEFT OUTER JOIN table2 
ON `table1`.`id`=`table2`.`id` 
where `table1`.`id`='this value no exist' 

這個回報什麼,但我希望有一個空或「」 ,

喜歡它

+--------+ 
| table1 | 
+--------+ 
| null | 
+--------+ 
|  | 
+--------+ 

回答

0

使用聚合函數,如MAX

SELECT MAX(table1.value) 
...etc. 

這保證總是返回1行。

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是在查詢中多餘的。

+0

我只舉了一個值,例如:P我真的希望在兩個表 – jearca

+0

中的行都可以把0替換爲null嗎? – jearca

+0

@jearca。 。 。是的,只需將它設爲0。 –