我正在搜索一个非常大的数据库,并希望根据此条件限制返回的行。
我的查询看起来像这样
SELECT id,value,year FROM table WHERE value = '$formvariable'
我真正想要的就是:
答案 0 :(得分:0)
您可以尝试这样做:
SELECT * FROM YourTable
WHERE value = '$formvariable'
AND 250 >= (SELECT COUNT(*) FROM YourTable)
UNION ALL
SELECT * FROM YourTable t
WHERE value = '$formvariable'
AND 250 <= (SELECT COUNT(*) FROM YourTable)
AND t.year >= YEAR(DATE_ADD(curdate(), INTERVAL -3 YEAR))
ORDER BY t.year DESC
LIMIT 1000
如果记录少于250条,则将在UNION
的第一部分中选择所有记录,并且不会从第二部分中选择任何记录。
如果还有更多,则不会从第一部分中选择任何一部分,并且将仅选择year
订购的过去3年的1000条第一条记录。