我正在使用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
中选择全部,其中type
和is_true
等于一个特定的值...。同时它还会返回所有LIKE语句进行搜索..但是当我添加LIKE / or语句时,似乎忽略了type和is_true语句
我也知道所有数据都正确传递
答案 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