我有一张名为iv6_posts的表 我想只在记录小于5行时选择记录 它应该在一个查询中
类似的东西:
select IF((select count(*) from iv6_posts)<5,select * from iv6_posts,null)
答案 0 :(得分:1)
您无法使用普通WHERE
实现这一目标,因为COUNT()
是一个群组功能而您无法使用普通HAVING
,因为它会将行分组为一个。
相反,您必须评估不同查询中的总计数,并将其与CROSS JOIN
组合:
SELECT
iv6_posts.*
FROM
iv6_posts
CROSS JOIN
(
SELECT
COUNT(1) AS c
FROM
iv6_posts
) AS init
WHERE
c<5
检查fiddle。