如果我(在From和To之间)缺少From,我很难弄清楚如何选择记录。
EG。在表单上我有日期范围,如果用户只输入TO并离开FROM,我怎么能选择到目前为止的所有记录。
我的问题出现在这里,
SELECT * FROM table WHERE BETWEEN from AND to;
这是我的查询,我想使用相同的查询,只是修改我的变量,这样我就不必根据输入的数据而拥有多个SELECTS。
由于
答案 0 :(得分:1)
我建议你安排你的申请有两个问题:
SELECT *
FROM table
WHERE date BETWEEN $from AND $to
和
SELECT *
FROM table
WHERE date <= $to
然后根据是否提供$from
来选择查询。
为什么呢?两个查询都可以利用date
上的索引。通常,MySQL在使用or
条件识别索引使用方面做得不好。
或者,您可以使用AlexK的建议并将$from
设置为一些荒谬的旧日期并使用OP中的查询。
答案 1 :(得分:0)
尝试类似:
SELECT *
FROM table
WHERE ($from = '' AND date <= $to) OR
(date BETWEEN $from AND $to);
答案 2 :(得分:0)
您可以使用上面的Giorgos选择或使用union来执行此操作:
SELECT *
FROM table
WHERE date BETWEEN $from AND $to
UNION
SELECT *
FROM table
WHERE date <= $to AND $from IS NULL
就我个人而言,我认为Giorgos的解决方案有点清洁,但有时你会想要一个UNION,所以我要包括完整性。