在SQL中的两个不同列之间显示两个用户输入值之间的值范围?

时间:2012-01-01 19:25:08

标签: sql between

例如:table name = table

column1 |列2

1              7
2              8
3              9
4             NULL
5              11
6              12

要求用户输入两个值,一个来自column1,另一个来自第2列。让我们说用户输入2和12.结果看起来应该是这样的。

column1 |列2

3              9
4             NULL
5              11

我尝试过使用下面的代码,但我不确定它是否正常工作。加上Null值没有显示,所以这也是一个问题。此外,实际值包含数值和字符串值。

SELECT DISTINCT column1, column2 
FROM table 
WHERE column1 
BETWEEN '&column1' AND column1 
AND column2 NOT BETWEEN '&column2 AND column2 
ORDER BY column1;

感谢您的回复

2 个答案:

答案 0 :(得分:1)

SELECT DISTINCT column1, column2 
FROM table 
WHERE column1 
BETWEEN '&column1' AND (SELECT column1 FROM table WHERE column2 = '&column2') 
ORDER BY column1;

答案 1 :(得分:0)

BETWEEN表示非严格的不平等。如果你不想要行

2 8
6 12

要显示在结果中,您必须编写

SELECT DISTINCT column1, column2
FROM table
WHERE (column1 > '&column1' or column1 is null) 
  AND (column2 < '&column2' or column2 is null)
ORDER BY column1;