我有一个用于过滤/排序数据库记录的表单。
我按作者,类别和标签过滤帖子。我为作者和类别使用AND
子句,为标签使用OR
子句(可以输入多个标签)
查询如下所示
SELECT *
FROM (`posts`)
WHERE `author` = 'dan'
AND `category` = 'technology'
AND `tags` LIKE '%ebook%'
OR `tags` LIKE '%ipad%'
OR `tags` LIKE '%apple%'
上面的查询会返回包含搜索过的任何标记的帖子,无论作者或类别如何。
我想仅在作者姓名ebook, ipad, apple
和类别dan
内返回包含标记technology
的帖子。
如何在mysql中这样做?
答案 0 :(得分:5)
在或
周围添加括号SELECT
*
FROM
(`posts`)
WHERE
`author` = 'dan' AND
`category` = 'technology' AND
( `tags` LIKE '%ebook%' OR `tags` LIKE '%ipad%' OR `tags` LIKE '%apple%' )
答案 1 :(得分:2)
这就是你需要的:
SELECT *
FROM (`posts`)
WHERE `author` = 'dan'
AND `category` = 'technology'
AND (`tags` LIKE '%ebook%' OR `tags` LIKE '%ipad%' OR `tags` LIKE '%apple%')
由于操作顺序,你所做的相当于:
SELECT *
FROM (`posts`)
WHERE (`author` = 'dan' AND `category` = 'technology' AND `tags` LIKE '%ebook%')
OR `tags` LIKE '%ipad%'
OR `tags` LIKE '%apple%'