2017-02-17 77 views
3

假設我有一個表「interesting_table」,我想查找其中所有條目都非空的所有行。SQL查詢 - 查找所有條目非空的行

我試圖

select * from interesting_table where * is not NULL ; 

它不起作用,因爲*不被識別爲一列。我如何在不列出所有列的情況下對其進行修改?

+1

有沒有簡單的方法。要麼指定所有的列,要麼使用動態sql來構造你的語句。 –

+1

您必須實際列出列,並對每個列進行非空檢查,並用AND條件分隔。 –

+0

感謝Joel和vkp。問題可以關閉。 – Illusionist

回答

1

兩個選項:

1)使用像CONCAT一個函數,將返回null如果任何參數爲空

select * 
from interesting_table 
where concat(data1, data2) is not null; 

2)使用NATURAL JOIN與同桌。如果任何列爲NULL,則JOIN將失敗該行。

select t1.* 
from interesting_table t1 
natural join interesting_table t2; 

如果表中包含重複項,則可能需要使用DISTINCT。

演示:http://rextester.com/NRSDM90436