这里我提到了查询:
lowerValue = 3, upperValue = 6
SELECT * FROM SampleTable where tableDay BETWEEN 'lowerValue' AND 'upperValue';
此查询工作正常,但我需要在下面提供查询类型
lowerValue = 3, upperValue = 6
SELECT * FROM SampleTable where tableDay BETWEEN 'upperValue' AND 'lowerValue';
它作为空列表返回,因为这两个值都是动态的,我做错了什么?
答案 0 :(得分:3)
作为quickfix,您可以使用GREATEST() / LEAST()比较函数:
SELECT *
FROM SampleTable
WHERE tableDay BETWEEN LEAST(upperValue, lowerValue) AND
GREATEST(upperValue, lowerValue);
但如果upperValue
可能小于lowerValue
,则使用不同的名称。
答案 1 :(得分:0)
你的第一个论点必须始终是较低的一个。
来自SQL的文档:
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
如果test_expression的值大于或等于 begin_expression 的值且小于或等于该值,则BETWEEN 返回 TRUE end_expression 。