SELECT查询不满足条件的结果怎么写

cky77 2019-05-17 10:38:42
RT,数据库有一个表。
有几条查询条件。
我现在想知道要是想查询在这个表不满足那几条查询条件的SQL语句怎么写。
...全文
810 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
遇星 2019-05-17
  • 打赏
  • 举报
回复
引用 6 楼 cky77 的回复:
[quote=引用 3 楼 受了伤风的星辰 的回复:] SELECT * FROM test.vedioinfo WHERE NOT IN(SELECT * FROM test.vedioinfo WHERE vedioName LIKE '%1%') 改成 SELECT * FROM test.vedioinfo where vedioName not LIKE '%1%'; SELECT * FROM test.vedioinfo WHERE NOT( vedioName LIKE '%1%' AND vedioSize > 1000) 改成 SELECT * FROM test.vedioinfo WHERE vedioName not LIKE '%1%' and vedioSize < 1000;
嗯嗯,我没说清楚,我的查询条件是固定的,比如vedioSize < 1000,我想查不满足条件,不能写成vedioSize >= 1000.我只能在外围改。[/quote] SELECT * FROM test.vedioinfo WHERE NOT IN(SELECT * FROM test.vedioinfo WHERE vedioName LIKE '%1%') 改成 SELECT * FROM test.vedioinfo a where not exist (select 1 from test.vedioinfo b WHERE a.id=b.id and b.vedioName LIKE '%1%') ; SELECT * FROM test.vedioinfo WHERE NOT( vedioName LIKE '%1%' AND vedioSize > 1000) 改成 SELECT * FROM test.vedioinfo a WHERE not exists (select 1 from vedioName b where a.id=b.id and b.vedioName LIKE '%1%' and b.vedioSize < 1000);
cky77 2019-05-17
  • 打赏
  • 举报
回复 1
引用 3 楼 受了伤风的星辰 的回复:
SELECT * FROM test.vedioinfo WHERE NOT IN(SELECT * FROM test.vedioinfo WHERE vedioName LIKE '%1%')

改成 SELECT * FROM test.vedioinfo where vedioName not LIKE '%1%';

SELECT * FROM test.vedioinfo WHERE NOT( vedioName LIKE '%1%' AND vedioSize > 1000)

改成 SELECT * FROM test.vedioinfo WHERE vedioName not LIKE '%1%' and vedioSize < 1000;


嗯嗯,我没说清楚,我的查询条件是固定的,比如vedioSize < 1000,我想查不满足条件,不能写成vedioSize >= 1000.我只能在外围改。
遇星 2019-05-17
  • 打赏
  • 举报
回复
引用 4 楼 cky77 的回复:
[quote=引用 1 楼 受了伤风的星辰 的回复:] 取反不就是了,等于的变成不等于,like变成not like,范围区间变成左右区间等等,需要同时成立的话,用and串起来,否则用or。 这种问题建议还是把查询条件写清楚,SQL逻辑需求讲出来,才好回答。
SELECT * FROM test.vedioinfo WHERE NOT( vedioName LIKE '%1%' OR vedioSize > 1000) 是这样写吧?我这样写能查出来。不知道规范不规范[/quote] 看上面回复
cky77 2019-05-17
  • 打赏
  • 举报
回复
引用 1 楼 受了伤风的星辰 的回复:
取反不就是了,等于的变成不等于,like变成not like,范围区间变成左右区间等等,需要同时成立的话,用and串起来,否则用or。

这种问题建议还是把查询条件写清楚,SQL逻辑需求讲出来,才好回答。


SELECT * FROM test.vedioinfo WHERE NOT( vedioName LIKE '%1%' OR vedioSize > 1000)
是这样写吧?我这样写能查出来。不知道规范不规范
遇星 2019-05-17
  • 打赏
  • 举报
回复
SELECT * FROM test.vedioinfo WHERE NOT IN(SELECT * FROM test.vedioinfo WHERE vedioName LIKE '%1%') 改成 SELECT * FROM test.vedioinfo where vedioName not LIKE '%1%'; SELECT * FROM test.vedioinfo WHERE NOT( vedioName LIKE '%1%' AND vedioSize > 1000) 改成 SELECT * FROM test.vedioinfo WHERE vedioName not LIKE '%1%' and vedioSize < 1000;
cky77 2019-05-17
  • 打赏
  • 举报
回复
SELECT * FROM test.vedioinfo WHERE NOT IN(SELECT * FROM test.vedioinfo WHERE vedioName LIKE '%1%')

SELECT * FROM test.vedioinfo WHERE NOT EXISTS(SELECT * FROM test.vedioinfo WHERE vedioName LIKE '%1%')

这两种查不出来

SELECT * FROM test.vedioinfo WHERE NOT( vedioName LIKE '%1%')
这种查不满足一个条件的结果正确

SELECT * FROM test.vedioinfo WHERE NOT( vedioName LIKE '%1%' AND vedioSize > 1000)

这种想查同时不满足两种条件的结果就不正确了。






遇星 2019-05-17
  • 打赏
  • 举报
回复
取反不就是了,等于的变成不等于,like变成not like,范围区间变成左右区间等等,需要同时成立的话,用and串起来,否则用or。 这种问题建议还是把查询条件写清楚,SQL逻辑需求讲出来,才好回答。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧