簡體   English   中英

檢查兩列mysql之間的多個值

[英]checking multiple values in between two columns mysql

我正在嘗試使用 MySQL 查詢來檢查兩個列值之間的多個值。 例如,這里的一個值是我的查詢有效

SELECT column3
FROM table
WHERE (12 between minvaluecol AND maxvaluecol) AND
      id = 123;

我想檢查多個值,例如 (12,13,14,67,68),並且應該返回 minvaluecol 和 maxvaluecol 列之間的值。 在這種情況下,只有 12、13、14 在 minvaluecol 和 maxvaluecol 列之間,而 67、68 不是。

我的桌子看起來像這樣

id   | minvaluecol | maxvaluecol
---- | ----------- | ------------
121  | 23          |  35
123  | 10          |  20
125  | 40          |  50   

id 123 的輸出應該是這樣的,

12  | true
13  | true
14  | true
67  | false
68  | false

請幫助我在 MySQL 中進行此查詢。 謝謝你。

更新

根據更新的問題完全修改了答案。

由於您需要將所有值作為不同的行,因此您需要使用UNIONLEFT JOIN將它們與原始表一起SELECT ,例如:

SELECT a.val, IF(a.val BETWEEN tv.minvaluecol AND maxvaluecol, 'true', 'false') AS result
FROM (
SELECT 12 AS val
UNION 
SELECT 13 AS val
UNION 
SELECT 14 AS val
UNION 
SELECT 67 AS val
UNION 
SELECT 68 AS val) a
JOIN test_values tv
WHERE tv.id = 123;

這是SQL Fiddle

獲得結果的最簡單方法是將這些值插入表中,然后像這樣加入:

SELECT value, 
   CASE WHEN value between minvaluecol AND maxvaluecol THEN 'true ELSE 'false' END
FROM table 
CROSS JOIN table_with_values
WHERE id = 123
ORDER BY value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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