如何从数据库中选择与条件不匹配的行,除非它们与另一个

时间:2015-11-10 14:47:11

标签: sql

我不确定如何提出这个问题。所以我将直接进入一个例子。

我需要运行一个跟这样的

之类的SQL查询
SELECT * FROM MYTABLE
WHERE id > 1000
AND name not like 'abc_%'
UNLESS name like 'abc_def%'

所以在结果中:

  • 其中'name'为'abc_zyxdef'或'abc_lmnop'的行将不会被返回,无论id如何。
  • 如果id超过1000,将返回'name'为'abc_defghij'或'abc_def123'的行
  • 如果id超过1000
  • ,将返回'name'为其他任何内容的行

这可能在一个声明中吗?

由于

1 个答案:

答案 0 :(得分:4)

为什么不呢?

SELECT * FROM MYTABLE
WHERE id > 1000
AND (name not like 'abc_%'
OR name like 'abc_def%')