bry*_*mon 249 mysql sql select notnull
是否可以执行只接受NOT NULL值的select语句?
现在我正在使用这个:
SELECT * FROM table
Run Code Online (Sandbox Code Playgroud)
然后我必须用php循环过滤掉空值.
有办法吗?
SELECT * (that are NOT NULL) FROM table
Run Code Online (Sandbox Code Playgroud)
?
现在,当我选择*我得到val1,val2,val3,null,val4,val5,null,null等....但我只是想得到我的结果中不为null的值.这可能没有过滤循环吗?
Mar*_*ith 429
你应该用IS NOT NULL.(比较操作符=和<>两个给UNKNOWN用NULL于表达的任一侧).
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
为了完整起见,我会提到在MySQL中你也可以否定null安全等式运算符,但这不是标准的SQL.
SELECT *
FROM table
WHERE NOT (YourColumn <=> NULL);
Run Code Online (Sandbox Code Playgroud)
编辑以反映评论.听起来您的桌子可能不是第一种正常形式,在这种情况下,更改结构可能会使您的任务更容易.其他几种做法虽然......
SELECT val1 AS val
FROM your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2
FROM your_table
WHERE val2 IS NOT NULL
/*And so on for all your columns*/
Run Code Online (Sandbox Code Playgroud)
上述缺点是它为每列扫描多次一次.下面可能会避免这种情况,但我还没有在MySQL中对此进行过测试.
SELECT CASE idx
WHEN 1 THEN val1
WHEN 2 THEN val2
END AS val
FROM your_table
/*CROSS JOIN*/
JOIN (SELECT 1 AS idx
UNION ALL
SELECT 2) t
HAVING val IS NOT NULL /*Can reference alias in Having in MySQL*/
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 17
您可以筛选出特定列中包含NULL值的行:
SELECT col1, col2, ..., coln
FROM yourtable
WHERE somecolumn IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
如果要过滤掉任何列中包含null的行,请尝试以下操作:
SELECT col1, col2, ..., coln
FROM yourtable
WHERE col1 IS NOT NULL
AND col2 IS NOT NULL
-- ...
AND coln IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
更新:根据您的意见,也许你想要这个?
SELECT * FROM
(
SELECT col1 AS col FROM yourtable
UNION
SELECT col2 AS col FROM yourtable
UNION
-- ...
UNION
SELECT coln AS col FROM yourtable
) T1
WHERE col IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
我对Martin说,如果你需要这样做,那么你应该改变你的数据库设计.
小智 12
Select * from your_table
WHERE col1 and col2 and col3 and col4 and col5 IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
这种方法的唯一缺点是你只能比较5列,之后结果总是假的,所以我只比较可以的字段NULL.
我找到了这个解决方案
此查询为每列选择last not null值.
例
如果你有一张桌子:
id|title|body
1 |t1 |b1
2 |NULL |b2
3 |t3 |NULL
Run Code Online (Sandbox Code Playgroud)
你得到:
title|body
t3 |b2
Run Code Online (Sandbox Code Playgroud)
询问
SELECT DISTINCT (
SELECT title
FROM test
WHERE title IS NOT NULL
ORDER BY id DESC
LIMIT 1
) title, (
SELECT body
FROM test
WHERE body IS NOT NULL
ORDER BY id DESC
LIMIT 1
) body
FROM test
Run Code Online (Sandbox Code Playgroud)
我希望能帮助你.
以下查询对我有用
当我设置列“NULL”的默认值时
select * from table where column IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
当我设置默认值时什么也没有
select * from table where column <>''
Run Code Online (Sandbox Code Playgroud)