使用LIKE的多个WHERE语句和多个列

时间:2018-09-17 17:30:52

标签: sql sqlite

我正在使用sqlite数据库,当前正在使用此sql语句在应用程序中定义搜索。

SELECT *
FROM 'tablename' 
WHERE type = 'type' AND
      is_real= 'true' AND
      id LIKE '%search input%' OR title LIKE '%search input%' OR body LIKE '%search input%'
ORDER BY index_id

我想做的是从tablename中选择全部,其中typeis_true等于一个特定的值...。同时它还会返回所有LIKE语句进行搜索..但是当我添加LIKE / or语句时,似乎忽略了type和is_true语句

我也知道所有数据都正确传递

2 个答案:

答案 0 :(得分:2)

由于运算符优先级,您需要一些括号:

SELECT t.* 
FROM tablename t
WHERE (type = 'type' AND is_real= 'true') AND 
      (id LIKE '%search input%' OR title LIKE '%search input%' OR body LIKE '%search input%') 
ORDER BY index_id;

答案 1 :(得分:1)

我认为您的问题是OR,而不是LIKE。您只需要在LIKE语句周围加上括号即可。否则,如果任何OR为true,它将忽略前两个条件。

SELECT *
FROM 'tablename' 
WHERE type = 'type' AND
      is_real= 'true' AND
      ( id LIKE '%search input%' OR title LIKE '%search input%' OR body LIKE '%search input%' )
ORDER BY index_id