PDO + mySQL:这不会输出随机行:
"SELECT COUNT(*) as numrows, somefield, otherfield ORDER BY RAND()"
如果我使用"SELECT COUNT(*) as numrows, somefield, otherfield"
,我也不能使用while循环(它会停在一行)
知道为什么吗?我不能使用COUNT()并且还有标准或循环?
答案 0 :(得分:0)
因为count()
是一个聚合函数并且只返回一条记录 - 在您的情况下是表中记录的数量。
在MySQL中,您可以将其与普通字段混合,从而导致这种奇怪的行为。在其他数据库引擎中,此查询会引发错误。
如果您确实需要一个随机行和一个查询中的表行数,您可以这样做
SELECT somefield,
otherfield,
(SELECT COUNT(*) from your_table) as numrows
from your_table
ORDER BY RAND()
答案 1 :(得分:0)
您是否尝试对数据进行分组?
SELECT COUNT(*) as numrows, somefield, otherfield
FROM table t
GROUP BY somefield, otherfield
ORDER BY RAND();
大多数数据库不允许使用原始查询,并且与SQL标准不一致。 MySQL恰好通过扩展支持这种语法。 count(*)
表示查询是聚合。如果没有group by
,则只返回一行 - 整个数据集被视为一个组。