使用PDO

时间:2016-06-08 07:13:49

标签: php mysql pdo

我正在搜索一个非常大的数据库,并希望根据此条件限制返回的行。

我的查询看起来像这样

SELECT id,value,year FROM table WHERE value = '$formvariable'

我真正想要的就是:

  • 如果查询返回的行超过250行,则仅显示按年份排序的最后3年结果,限制为1000.
  • 否则250行或更少,显示全部。

1 个答案:

答案 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条第一条记录。