【问题标题】:MySQL multiple column search return wrong resultMySQL多列搜索返回错误结果
【发布时间】:2017-03-01 09:17:48
【问题描述】:

我有以下条件查询来执行多列搜索

SELECT 
    prod.pid, 
    prod.pname, 
    prod.description, 
    prod.status, 
    foto.set_cover, 
    foto.filename
FROM products prod
INNER JOIN second_child_categories secd ON prod.category_id = secd.second_id
INNER JOIN photos foto ON prod.pid = foto.pid
WHERE CONCAT( prod.pname, prod.description ) LIKE '%home%'
OR CONCAT( prod.description, prod.pname ) LIKE '%home%'
AND foto.set_cover = '1'
AND prod.status = '1'
ORDER BY prod.created_date DESC 

这是输出:

参考查询,我设置了条件:

foto.set_cover='1' AND prod.status='1'

结果与条件不匹配。

如何解决这个问题?

谢谢。

【问题讨论】:

    标签: mysql search conditional multiple-columns


    【解决方案1】:

    见Mysql or/and precedence?

    OR具有更高的优先级,你(隐式)写的:

    CONCAT( prod.pname, prod.description ) LIKE '%home%'
    OR (
      CONCAT( prod.description, prod.pname ) LIKE '%home%'
      AND foto.set_cover = '1'
      AND prod.status = '1'
    )
    

    我认为你的意思是什么

    ( 
      CONCAT( prod.pname, prod.description ) LIKE '%home%'
      OR 
      CONCAT( prod.description, prod.pname ) LIKE '%home%'
    )
    AND foto.set_cover = '1'
    AND prod.status = '1'
    

    【讨论】:

      猜你喜欢
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2012-09-28
      • 1970-01-01
      相关资源
      最近更新 更多