在MySQL中搜索不同的列

时间:2013-12-27 06:59:27

标签: mysql database

我使用以下查询从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 

现在这不起作用:(

1 个答案:

答案 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%'为真的结果,

为真。