0

有月份复选框,年份复选框和以下代码(伪代码):

if(month.checked) query = select* from tab where month=month.text;
if(year.checked) query = select* from tab where year=year.text;
if(month.checked and year.checked) query = select * from tab where month=month.value and year=year.value
if(!month.checked and !year.checked) query = select* from tab

如您所见,有 4 个不同的查询。是否可以在一个查询中更快地完成?

4

1 回答 1

0

从技术上讲,您可以对此进行一次查询,但查询会变得更加复杂,这通常会导致查询速度变慢。除非您有令人信服的理由这样做,否则请坚持使用单独的查询。

类似下面的查询可以解决问题:

SELECT *
FROM tab
WHERE ? IS NOT NULL AND month = ?
OR ? IS NOT NULL AND year = ?
OR ? IS NULL AND ? IS NULL

这里参数 1 和 5 是检查月份的指示符(NULL 表示不检查,值表示检查),参数 2 是 month.text 的值,参数 3 和 6 是检查年的指示符,参数 4 是年的值。文本。

于 2013-04-20T07:28:00.860 回答