我正在使用此查询,但在所有列中都出现空值。我怎么能摆脱这个?那么它变成了一个空集?
SELECT players.id, players.room, players.money, players.cellx, players.celly, max(levels.level) as level
FROM players, levels
WHERE players.xp - levels.xp >= 0 AND id=12;
+----+------+-------+-------+-------+-------+
| id | room | money | cellx | celly | level |
+----+------+-------+-------+-------+-------+
|NULL| NULL | NULL | NULL | NULL | NULL |
+----+------+-------+-------+-------+-------+
答案 0 :(得分:1)
通过使用MAX
聚合函数,MySQL执行隐式GROUP BY
。
http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
建议:
ONLY_FULL_GROUP_BY
设置以禁用此行为。您将收到一条错误消息,而不是无意义的结果。FROM
子句中连接多个表,而是使用ANSI JOIN语法。GROUP BY
或窗口函数MAX(...) OVER (...)
来计算聚合。