簡體   English   中英

將WHERE和IN子句與兩個字段組合在一起

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM