【问题标题】:IN array and LIKE Condition using mysql query使用mysql查询的IN数组和LIKE Con​​dition
【发布时间】:2014-12-12 15:28:28
【问题描述】:

我有一个mysql查询如下

"SELECT * FROM `listings`
WHERE `category` IN (".implode(",",$search_category_list).")
OR `title` LIKE '%".$search_for."%'
ORDER BY `id` DESC LIMIT 10"

它只给出第一个条件的结果。我没有从第二个条件得到结果。但是如果我删除第一个条件并运行查询,即

"SELECT * FROM `listings`
WHERE `title` LIKE '%".$search_for."%'
ORDER BY `id` DESC LIMIT 10"

效果很好。

请帮我解决这个问题。

【问题讨论】:

  • 这种东西求有约束力的说法。
  • 您能否添加$search_forsearch_category_list 的值?
  • 你有一个排序和一个限制。这就引出了一个问题——任何标题匹配的 id 值实际上是否高于前十个类别匹配的 id 值?
  • #dinistro $search_category_list = array(123,167,156) 的值和 $search_for = "books" 的值
  • 要解决此问题,请从查询中删除 LIMIT 10。您是否仍然无法收到与WHERE ... OR 子句的第二部分匹配的任何行?

标签: mysql arrays sql-like


【解决方案1】:

$search_category 列表是否包含字符串或整数值?

如果包含字符串,需要用""字符括起来

例子:

WHERE `category` IN ("cat1","cat2")

【讨论】:

  • $search_category_list = array(123,167,156) 的值和 $search_for = "books" 的值表中只有 10 行,3 行具有类别 123、167、156 和 2 个标题为“书籍”。[请注意,类别匹配行与标题数学行不同。根据表格,结果应显示 5 行,即:3 行用于数组条件,2 行用于类似条件] 但结果仅显示 3 行 [来自数组条件匹配]。如果我只在 Like 条件下运行,结果会显示匹配的 2 行。
猜你喜欢
  • 2011-05-18
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多