MySql查询以特定方式生成

时间:2017-12-27 11:55:27

标签: mysql

我有两个表,my_table1my_table2

my_table1包含1到10之间的数字,my_table2包含字母a,b,c和d。

我想做一个返回以下内容的查询:

1 a
1 b
1 c
1 d
2 a
2 b
2 c
2 d

一直到最后。

有没有办法在SQL中执行此操作?

提前致谢。

2 个答案:

答案 0 :(得分:1)

这是CROSS JOIN,在MySQL中相当于INNER JOIN或常规逗号:

SELECT * FROM my_table1, my_table2;

比照https://dev.mysql.com/doc/refman/5.7/en/join.html

答案 1 :(得分:1)

这是一个交叉连接。您可以通过选择select * from table1, table2以简单(旧)形式编写,但这是过时的语法,如果您将此语法与更多语法混合,您的查询将变得非常难以阅读1992年引入的现代显式连接。因此,我选择编写显式cross join

此外,您似乎希望对结果进行排序。如果你很幸运,这会自动发生,但你不能确定这种情况总是会发生,所以如果你需要它最好指定它。如果没有,请省略order by子句,因为它确实使查询变慢。

select
  n.nr,
  l.letter
from
  my_table1 n
  cross join my_table2 l
order by
  n.nr,
  l.letter