我正在搜索一个非常大的数据库,并希望根据这个条件限制返回的行。
我的查询如下
SELECT id,value,year FROM table WHERE value = '$formvariable'我真正想要的是:
发布于 2016-06-08 07:20:48
你可以尝试这样做:
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的第一部分中被选中,而没有一个将从第二个部分中选择。
如果有更多的,将没有从第一部分选择,只有1000个由year订购的过去3年的第一记录将被选择。
https://stackoverflow.com/questions/37695611
复制相似问题