我使用以下查询从2个不同的表中提取和排序数据。
SELECT
users.*,
story.*,
IFNULL(share.`date`, story.`date`) AS sort_date
FROM
users
INNER JOIN story
ON users.id = story.user_id
LEFT JOIN SHARE
ON share.story_id = story.id
WHERE story.id IN (1, 2, 3, 4, 5)
AND story.title LIKE '%SEARCH_TERM%'
ORDER BY sort_date DESC
它工作得很好,但我需要在下面的两个表中搜索多个列
SELECT
users.*,
story.*,
IFNULL(share.`date`, story.`date`) AS sort_date
FROM
users
INNER JOIN story
ON users.id = story.user_id
LEFT JOIN SHARE
ON share.story_id = story.id
WHERE story.id IN (1, 2, 3, 4, 5)
AND story.title LIKE '%SEARCH_TERM%'
AND users.name LIKE '%SEARCH_TERM%'
ORDER BY sort_date DESC
现在这不起作用:(
答案 0 :(得分:0)
在WHERE
之后,您必须指定单条件,而不是两个或三个或更多。
这种情况可以使用logical operators从更简单的条件构建,例如AND,OR,XOR,NOT。
例如,AND运算符以这样一种方式连接两个条件:只有当两个操作数都为真时,结果条件才为真。所以当你说
时story.title LIKE '%SEARCH_TERM%' AND users.name LIKE '%SEARCH_TERM%'
对于story.title LIKE '%SEARCH_TERM%'
和users.name LIKE '%SEARCH_TERM%'
都为真的结果,情况属实。这很可能不是你想要的。相比之下,
story.title LIKE '%SEARCH_TERM%' OR users.name LIKE '%SEARCH_TERM%'
对于story.title LIKE '%SEARCH_TERM%'
为真的结果以及users.name LIKE '%SEARCH_TERM%'
为真的结果,为真。