检查两列mysql之间的多个值

时间:2017-07-16 16:48:08

标签: mysql sql database

我正在尝试使用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中的这个问题。谢谢。

2 个答案:

答案 0 :(得分:1)

<强>更新

根据更新的问题彻底改进了答案。

由于您需要将所有值设置为不同的行,因此您需要SELECT所有值与UNIONLEFT 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