当我需要一个空集时,SQL查询显示空值

时间:2016-10-15 11:05:47

标签: mysql sql mysql-workbench

我正在使用此查询,但在所有列中都出现空值。我怎么能摆脱这个?那么它变成了一个空集?

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  |  
+----+------+-------+-------+-------+-------+

1 个答案:

答案 0 :(得分:1)

通过使用MAX聚合函数,MySQL执行隐式GROUP BYhttp://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

建议:

  • 使用MySQL 5.7.5或更高版本,或设置ONLY_FULL_GROUP_BY设置以禁用此行为。您将收到一条错误消息,而不是无意义的结果。
  • 不要在FROM子句中连接多个表,而是使用ANSI JOIN语法。
  • 在问题中指定您要查找的内容;查询按原样对我没有任何意义。
  • 您可能需要明确的GROUP BY或窗口函数MAX(...) OVER (...)来计算聚合。