MySQL SELECT只是非空值

MySQL SELECT只是非空值

是否可以执行只接受NOT NULL值的select语句?

现在我正在使用这个:

SELECT * FROM table

然后我必须用php循环过滤掉空值。

有办法吗?

SELECT * (that are NOT NULL) FROM table

现在,当我选择*我得到val1,val2,val3,null,val4,val5,null,null等....但我只是想得到我的结果中不为null的值。这可能没有过滤循环吗?


白衣染霜花
浏览 1211回答 3
3回答

一只名叫tom的猫

你应该用IS NOT NULL。(比较操作符=和<>两个给UNKNOWN用NULL于表达的任一侧)。SELECT&nbsp;*&nbsp;FROM&nbsp;table&nbsp;WHERE&nbsp;YourColumn&nbsp;IS&nbsp;NOT&nbsp;NULL;为了完整起见,我会提到在MySQL中你也可以否定null安全等式运算符,但这不是标准的SQL。SELECT&nbsp;*FROM&nbsp;table&nbsp;WHERE&nbsp;NOT&nbsp;(YourColumn&nbsp;<=>&nbsp;NULL);编辑以反映评论。听起来您的桌子可能不是第一种正常形式,在这种情况下,更改结构可能会使您的任务更容易。其他几种做法虽然......SELECT&nbsp;val1&nbsp;AS&nbsp;valFROM&nbsp;&nbsp;your_tableWHERE&nbsp;val1&nbsp;IS&nbsp;NOT&nbsp;NULLUNION&nbsp;ALLSELECT&nbsp;val2&nbsp; FROM&nbsp;&nbsp;your_tableWHERE&nbsp;val2&nbsp;IS&nbsp;NOT&nbsp;NULL/*And&nbsp;so&nbsp;on&nbsp;for&nbsp;all&nbsp;your&nbsp;columns*/上述缺点是它为每列扫描多次一次。下面可能会避免这种情况,但我还没有在MySQL中对此进行过测试。SELECT&nbsp;CASE&nbsp;idx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;1&nbsp;THEN&nbsp;val1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;2&nbsp;THEN&nbsp;val2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;AS&nbsp;valFROM&nbsp;&nbsp;&nbsp;your_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*CROSS&nbsp;JOIN*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JOIN&nbsp;(SELECT&nbsp;1&nbsp;AS&nbsp;idx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UNION&nbsp;ALL &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;2)&nbsp;tHAVING&nbsp;val&nbsp;IS&nbsp;NOT&nbsp;NULL&nbsp;&nbsp;/*Can&nbsp;reference&nbsp;alias&nbsp;in&nbsp;Having&nbsp;in&nbsp;MySQL*/

浮云间

您可以筛选出特定列中包含NULL值的行:SELECT col1, col2, ..., colnFROM yourtableWHERE somecolumn IS NOT NULL如果要过滤掉任何列中包含null的行,请尝试以下操作:SELECT col1, col2, ..., colnFROM yourtableWHERE col1 IS NOT NULLAND col2 IS NOT NULL-- ...AND coln IS NOT NULL更新:根据您的意见,也许你想要这个?SELECT * FROM(&nbsp; &nbsp; SELECT col1 AS col FROM yourtable&nbsp; &nbsp; UNION&nbsp; &nbsp; SELECT col2 AS col FROM yourtable&nbsp; &nbsp; UNION&nbsp; &nbsp; -- ...&nbsp; &nbsp; UNION&nbsp; &nbsp; SELECT coln AS col FROM yourtable) T1WHERE col IS NOT NULL我对Martin说,如果你需要这样做,那么你应该改变你的数据库设计。

慕尼黑5688855

Select&nbsp;*&nbsp;from&nbsp;your_table&nbsp; WHERE&nbsp;col1&nbsp;and&nbsp;col2&nbsp;and&nbsp;col3&nbsp;and&nbsp;col4&nbsp;and&nbsp;col5&nbsp;IS&nbsp;NOT&nbsp;NULL;这种方法的唯一缺点是你只能比较5列,之后结果总是假的,所以我只比较可以的字段NULL。
打开App,查看更多内容
随时随地看视频慕课网APP