2011-10-03 54 views
1
Select Header1,Header2,Header3,ExtraHeader from tbl_likeinfo where HotelID=2 

這裏Header3和ExtraHeader可能有空值。在這種情況下,我不需要在我的查詢結果中只有空值,但應該給出包含其他列值的行。如何在mysql中的select查詢中省略具有空值的列?

如何實現這一目標?

+0

您的意思是說,您不想在結果中使用列,或者您的意思不是包含這些列中的空值的行? –

+0

如果在5列2列之間爲空,它應該只爲該行顯示3列的值 – Heena

+0

然後,您只需讓WHERE指定:Header1不爲空且Header2不爲null AND ...這不是因爲在添加列時,您經常需要更新查詢,在這種情況下,我覺得更好的解決方案應該是我在答案中提出的建議。 –

回答

2

您不能根據查詢所選數據動態更改結果集中選定的列。如果你不想處理空值,你可以在標題值上使用CASE語句將它們改爲你選擇的值,這代表你可以用同樣的方式處理,但我不會推薦這種方法。

您可能想要更改您的方法。看起來你有你的表格佈局使用列來表示每個唯一的標題。如果你改變了你的佈局,使該表爲:

hotel_id  NUMBER 
header_name VARCHAR2(50) 
header_value VARCHAR2(100) 

然後當你插入的標頭,請按當時收到的頭一個刀片。然後改變你的選擇:

SELECT header_name, header_value FROM headers WHERE hotel_id = 2; 

如果你碰巧存儲那名空當你拉出來,要消除這些,然後標頭值:

SELECT header_name, header_value 
FROM headers 
WHERE hotel_id = 2 AND header_value is not null; 

如果順序很重要給你,然後在表格中添加一列,以便在你插入訂單時存儲訂單。此佈局還允許您存儲任意數量的標題信息,而不必在將來更改表格的佈局。

希望這會有所幫助。

+0

here header1,header2,..本身具有值 – Heena

0
AND Header3 IS NOT NULL AND ExtraHeader IS NOT NULL 
+0

在其中一個我的桌子我有10個標題和一個extraheader,在這種情況下,我需要做'和10次? – Heena

+0

我不是SQL專家,但是AFAIK,是的。 – m0skit0

+0

@Heena,你可以通過縮小它併合並(col1,col2,col3,...,col10)IS NULL'。但是,這可能會運行得更慢,因爲它會阻止MySQL使用索引並防止布爾短路。 – Johan

相關問題