COUNT(),ORDER BY(),WHILE {}

时间:2014-07-11 12:01:46

标签: mysql select pdo count sql-order-by

PDO + mySQL:这不会输出随机行:

"SELECT COUNT(*) as numrows, somefield, otherfield ORDER BY RAND()"

如果我使用"SELECT COUNT(*) as numrows, somefield, otherfield",我也不能使用while循环(它会停在一行)

知道为什么吗?我不能使用COUNT()并且还有标准或循环?

2 个答案:

答案 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,则只返回一行 - 整个数据集被视为一个组。