SQLite查询可能不在条件中

时间:2014-02-28 14:44:11

标签: sqlite

我有一张包含以下信息的表格。

AreaDescription     AD
------------------
Processing1         BB
Geology         BC
pilot           BB

需要动态的方法来查找给定集合中是否存在AD匹配('BC','G','S')它返回所有记录,否则只返回给定集合中匹配的记录(' BC”, 'G', 'S')

select * from tblArea where AreaDescription like '%o%' and (AD in ('BC','G','S') or 1=1)

我正在尝试上面的SQL,它包含

  

(AD in('BC','G','S')或1 = 1)

表达AD是否具有('BC','G','S')中的值然后返回那些或者按照1 = 1条件返回所有内容。

但这不起作用,因为我认为它有效。

这里我得到的所有行不仅仅包含'BC',所以我猜OR条件不正确吗?

有没有办法可以做到这一点?使用SWITCH?

1 个答案:

答案 0 :(得分:1)

只需组合两个查询,并在第二个查询中使用EXISTS来检查第一个是否与任何记录匹配:

SELECT *
FROM tblArea
WHERE AreaDescription LIKE '%o%'
  AND AD IN ('BC', 'G', 'S')
UNION ALL
SELECT *
FROM tblArea
WHERE AreaDescription LIKE '%o%'
  AND NOT EXISTS (SELECT 1
                  FROM tblArea
                  WHERE AreaDescription LIKE '%o%'
                    AND AD IN ('BC', 'G', 'S'))