我正在尝试使用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
<123> id 123的输出应该是,
12 | true
13 | true
14 | true
67 | false
68 | false
请帮我解决mysql中的这个问题。谢谢。
答案 0 :(得分:1)
<强>更新强>
根据更新的问题彻底改进了答案。
由于您需要将所有值设置为不同的行,因此您需要SELECT
所有值与UNION
和LEFT JOIN
一起使用原始表格,例如:
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 。
答案 1 :(得分:1)
获得结果的最简单方法是将这些值插入表中,然后像这样连接:
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