【发布时间】:2015-06-21 02:26:12
【问题描述】:
任何人都知道查询的可能性:
SELECT a.id, b.id FROM a CROSS JOIN b 和
SELECT a.id, b.id FROM b CROSS JOIN a
返回相同的结果?在这两种情况下,来自较少表的记录都被分配给较多表。我想得到这样的东西:
`| a.id | b.id |
-------+-----+
1 | q |
1 | w |
1 | e |
1 | r |
2 | q |
2 | w |
2 | e |
2 | r |
`
但我得到这样的结果:
`| a.id | b.id |
-------+-----+
1 | q |
2 | q |
1 | w |
2 | w |
1 | e |
2 | e |
1 | r |
2 | r |
`
mysql 会根据它们的数量自动选择交叉连接表的顺序,这有点奇怪。我知道我可以使用 ORDER BY,但我需要通过 CROSS JOIN 来做到这一点。
还有一个更复杂的问题,我想为每个 a.id 获取 10 条记录。我看到了解决方案:在 SELECT 子句中使用 IF 条件进行行计数。该行计数需要在原始结果中按 a.id 排序的行(无排序依据)。有没有其他解决方案可以做到这一点?
【问题讨论】:
-
通常情况下,除非您按部分提供顺序,否则无法保证输出顺序。
-
交叉连接工作正常
标签: mysql cross-join