如何在mysql的select查询中省略具有空值的列?

时间:2011-10-03 10:00:00

标签: mysql select

Select Header1,Header2,Header3,ExtraHeader from tbl_likeinfo where HotelID=2

这里Header3和ExtraHeader可能有空值。在这种情况下,我在查询结果中不需要那个空值,但是应该给出包含其他列值的行。

如何实现?

2 个答案:

答案 0 :(得分:2)

您无法根据查询选择的数据动态更改结果集中选定的列。如果您不想处理空值,可以在标题值上使用CASE语句将它们更改为您选择的值,表示您可以采用相同的方式,但我不建议采用这种方法。

您可能想要改变您的方法。您的表布局似乎使用列来表示每个唯一标头。如果您更改了布局,那么表格为:

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

然后,当您插入标题时,请在每次收到标题时插入一个插入。然后将您的选择更改为:

SELECT header_name, header_value FROM headers WHERE hotel_id = 2;

如果你碰巧存储了null的标题值,当你把它们拉出来时,你想要消除它们,然后:

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

如果订单对您很重要,则在表格中添加一列以在插入订单时存储订单。此布局还允许您存储任意数量的标头信息,而无需在将来更改表的布局。

希望这有帮助。

答案 1 :(得分:0)

AND Header3 IS NOT NULL AND ExtraHeader IS NOT NULL