我正试图找出从一个透视查找表中查询的最佳方法。
理想情况下,您有一个包含3列的查找表
min, max, value
1, 2, a
2, 3, b
3, 4, c
在这里你可以编写代码来获取正确的输出:
select value from table
where input >= min and input < max
因此,如果输入= 1.5,则值= a,如果输入= 2.5,则值= b。由于行是不相交的,
但是,我们的桌子必须按照以下方式构建,因为这是一个笨拙的情况。
1,2,3,4
a,b,c,-
如何创建一个可以在此类表中找到值的查询?
感谢您的期待!
答案 0 :(得分:1)
我相信你正在寻找一个CASE WHEN声明
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<base href="http://yourdomain.com/">
</head>
<body>
<? $txt = file_get_contents('http://stats.pingdom.com/qmwwuwoz2b71/522741');
echo $txt; ?>
</body>
</html>
希望这有帮助
答案 1 :(得分:1)
但是,我们的表必须按照以下方式构建 这是一个笨拙的情况。
您有两种选择:
取消此表,然后以同样的方式SELECT value FROM ( subquery ) ...
查询该子查询的结果:
SELECT 1 as min, 2 as max, "1" as value FROM table1
UNION ALL
SELECT 2 as min, 3 as max, "2" asvalue FROM table1
Union All
SELECT 3 as min, 4 as max, "3" asvalue FROM table1
演示:http://sqlfiddle.com/#!17/b6b4d/2
| min | max | value |
|-----|-----|-------|
| 1 | 2 | a |
| 2 | 3 | b |
| 3 | 4 | c |
您可以使用上述查询创建视图,并针对此视图运行查询。
假设此表中只有一行 - 构建一个像这样的查询:
SELECT CASE
WHEN input >=1 AND input < 2 THEN "1"
WHEN input >=2 AND input < 3 THEN "2"
WHEN input >=3 AND input < 4 THEN "3"
END As value
FROM Table1