Mysql 如何选择sql语句未选择的记录?
我有下面的sql查询。我对此sql查询未选择的所有记录感兴趣。我在下面做了一次尝试,但我的SQL语法有一个错误。有人能给我建议吗Mysql 如何选择sql语句未选择的记录?,mysql,sql,Mysql,Sql,我有下面的sql查询。我对此sql查询未选择的所有记录感兴趣。我在下面做了一次尝试,但我的SQL语法有一个错误。有人能给我建议吗 SELECT * FROM codec_status NOT IN (SELECT * FROM codec_status WHERE version_er_r='0' OR ntpStatus_er_r='0' OR stAvailable_er_r='0' OR RXRate_er_r='0' OR TXRa
SELECT *
FROM codec_status NOT IN
(SELECT *
FROM codec_status
WHERE version_er_r='0'
OR ntpStatus_er_r='0'
OR stAvailable_er_r='0'
OR RXRate_er_r='0'
OR TXRate_er_r='0'
OR DefaultCallRate_er_r='0'
OR RemoteView_er_r='0'
OR VoiceVlan_er_r='0'
OR Transport_er_r='0'
)
假设表codec_status的主ID只是ID。那么您应该这样做:
SELECT * FROM codec_status where id NOT IN
(SELECT id FROM codec_status WHERE version_er_r='0' OR ntpStatus_er_r='0' OR stAvailable_er_r='0' OR RXRate_er_r='0' OR TXRate_er_r='0' OR DefaultCallRate_er_r='0' OR RemoteView_er_r='0' OR VoiceVlan_er_r='0' OR Transport_er_r='0')
您应该学习逻辑门,这将在这些情况下对您有更多帮助。在这里使用 换成这个
SELECT * FROM codec_status WHERE version_er_r<>'0' AND ntpStatus_er_r<>'0' AND stAvailable_er_r<>'0' AND RXRate_er_r<>'0' AND TXRate_er_r<>'0' AND DefaultCallRate_er_r<>'0' AND RemoteView_er_r<>'0' AND VoiceVlan_er_r<>'0' AND Transport_er_r<>'0'
某些DBMS具有减号运算符:
select * from tablename where ....
minus
select * from tablename where ....
不幸的是,MySQL不支持减号运算符。如果您的表有一个ID列,您可以这样写:
select * from codec_status
where
id NOT IN (select ID
from
codec_status
where ....)
使用NOT IN时要小心,特别是当子查询返回空值时,但如果ID是主键,则应该没有问题
无论如何,您可以将查询编写为:
select * from codec_status
where NOT (
version_er_r='0'
OR ntpStatus_er_r='0'
OR stAvailable_er_r='0'
OR RXRate_er_r='0'
OR TXRate_er_r='0'
OR DefaultCallRate_er_r='0'
OR RemoteView_er_r='0'
OR VoiceVlan_er_r='0'
OR Transport_er_r='0'
)
即使在这里,如果所有列都为null,您也必须小心null值。您希望在第一个查询或第二个查询中返回行吗?只需使用not
我的SQL语法中有一个错误,为什么不共享错误消息,为什么让我们猜测?我从MYsqli得到:“1241-操作数应该包含1列”你确定你在我的子查询中只选择了ID吗?放在括号里的那个汉克斯兄弟!就这样。查询成功了,所有的数字最终都加起来了。
select * from codec_status
where NOT (
version_er_r='0'
OR ntpStatus_er_r='0'
OR stAvailable_er_r='0'
OR RXRate_er_r='0'
OR TXRate_er_r='0'
OR DefaultCallRate_er_r='0'
OR RemoteView_er_r='0'
OR VoiceVlan_er_r='0'
OR Transport_er_r='0'
)
SELECT *
FROM codec_status
WHERE NOT
(version_er_r='0'
OR ntpStatus_er_r='0'
OR stAvailable_er_r='0'
OR RXRate_er_r='0'
OR TXRate_er_r='0'
OR DefaultCallRate_er_r='0'
OR RemoteView_er_r='0'
OR VoiceVlan_er_r='0'
OR Transport_er_r='0')