[英]combining a WHERE and IN clause with two fields
我有一個表'商品'有3列(id,名稱,價格)。 我需要通過ID和價格范圍列表獲取數據。
我正在使用此查詢:
SELECT id, name, price FROM goods
WHERE (id, price)
IN ((1,10), (3,20), (2,10))
ORDER BY FIELD(id, 1,3,2)
當我使用嚴格的價格值時,一切都很好。
事實上,我需要做如下查詢:
SELECT id, name, price FROM goods
WHERE (id, price)
IN ((1, BETWEEN 0 AND 100), (2, BETWEEN 50 AND 150), (n, BETWEEN m AND k))
ORDER BY FIELD(id, 1,3,n)
我發現表達式(1, BETWEEN 0 AND 100)
永遠不會返回我需要的結果,而(1,10)
將會。
我肯定可以在php中按價格范圍排除記錄,但我正在嘗試使用索引在mysql查詢中找到更有效的方法。 我該怎么辦?
你不能像那樣使用BETWEEN。 嘗試將IN表達式更改為一系列OR:
SELECT id, name, price
FROM goods
WHERE
(id = 1 AND price BETWEEN 0 AND 100) OR
(id = 2 AND price BETWEEN 50 AND 150) OR
(id = n AND price BETWEEN m AND k)
ORDER BY FIELD(id, 1,3, n)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.