我有两个表,my_table1
和my_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中执行此操作?
提前致谢。
答案 0 :(得分:1)
这是CROSS JOIN
,在MySQL中相当于INNER JOIN
或常规逗号:
SELECT * FROM my_table1, my_table2;
答案 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