我正在寻找一个想法,通过过滤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"
答案 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 演示