用于混合搜索词和f.e.的SQL查询大多数出售

时间:2013-08-17 02:14:17

标签: sql sqlite search sql-order-by

我正在寻找一个想法,通过过滤id,search-word和大多数销售来混合搜索结果(用于jQuery自动完成)。我有“产品”表,其中包含以下列:“id,name,...,sold”这里是我的sql

    SELECT * FROM products
    WHERE 
        state=1 
        AND ( 
            id='$search' OR id LIKE '$search%' OR  id LIKE '%$search%' OR 
            name='$search' OR name LIKE '$search%' OR name LIKE '%$search%' 
            ) 
        ORDER BY ???

在此查询中,未包含“已售出(已售出商品)”。我正在寻找将此结合到我的查询中的方法。 我需要这个订单

1. full id (e.g. sombody types 312 than the first row must be id=312)
2. full name (...)
3. otherwise search-pattern combined with "sold"

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情

SELECT p.*, 
       MAX(3 * (id = '$search' OR id LIKE '%$search%'),
           2 * (name LIKE '%312%'),
           1 * (sold LIKE '%312%')) rank 
  FROM products p
 WHERE state = 1 
   AND (id = '$search' OR id LIKE '%$search%'
    OR name LIKE '%$search%'
    OR sold LIKE '%$search%')
 ORDER BY rank DESC

这是 SQLFiddle 演示