[英]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 中進行此查詢。 謝謝你。
更新
根據更新的問題完全修改了答案。
由於您需要將所有值作為不同的行,因此您需要使用UNION
和LEFT 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.