【问题标题】:Query with more than one like condition, with order by LIKE具有多个类似条件的查询,按 LIKE 排序
【发布时间】:2015-06-02 06:38:48
【问题描述】:

我正在使用多个赞,并尝试通过主关键字“防晒霜”获取订单,但我没有得到想要的结果,请检查我的查询。

select productName from products
where product like "%sun%"
   or product like "%screen%" 
   or product like "%sun screen%"
order by product like "sun screen %"

结果应该是:

sun screen olyiv
sun screen dabaga
sun bla
screen bla bla

请帮助获得结果。

【问题讨论】:

  • 最后的like 似乎是错误的。
  • 使用 SQL 可以使用“IN”运算符来实现“OR”为SELECT * FROM Customers WHERE City IN ('Paris','London');
  • 谢谢@kurenai kunai,IN 不适用于我的场景数据库很大
  • 感谢@Jarlh 编辑它现在听起来不错。!!

标签: mysql sql database plsql


【解决方案1】:

你可以尝试使用ORDER BY CASE:

SELECT p.productName 
FROM products p
WHERE p.productName LIKE '%sun%' 
   OR p.productName LIKE '%screen%'
   OR p.productName LIKE '%sun screen%' 
ORDER BY CASE
   WHEN p.productName LIKE '%sun screen%' THEN 1
   ELSE 2
END

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    Select productName from products 
    where productName like "%sun%" 
    or productName like "%screen%" 
    or productName like "%sun screen%" 
    Order by CASE WHEN (productName like "sun screen %") THEN NULL
                  ELSE productName END ASC
    

    【讨论】:

      【解决方案3】:

      你可以使用REGEXP如下

      WHERE product REGEXP 'sun|sun screen'
      

      See more

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-10
        • 2019-11-02
        • 1970-01-01
        • 2018-09-20
        • 2017-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多