首页 > 解决方案 > 如何修复不一致的mysql结果?

问题描述

我的MySQL查询

(SELECT * FROM names WHERE Rate = 75 ORDER BY RAND() LIMIT 1) 
UNION 
(SELECT * FROM names WHERE Rate = 75 ORDER BY RAND() LIMIT 1) 
UNION 
(SELECT * FROM names  WHERE Rate = 35 ORDER BY RAND() LIMIT 1);

它应该给我这样的东西

+----+-----+------+
| id | Rate| num  |
+----+-----+------+
| id |  75 |  987 |
| id |  75 |  987 |
| id |  35 |  987 |
+- --+-----+------+

但有时它只给我 2 行,像这样

+----+-----+------+
| id | Rate| num  |
+----+-----+------+
| id |  75 |  987 |
| id |  35 |  987 |
+- --+-----+------+

标签: mysqlsql-order-byunionunion-allsql-limit

解决方案


UNION注意和之间的区别UNION ALL

  • UNION 将删除重复的行
  • UNION ALL 保留所有行

推荐阅读