2017-12-27 93 views
0

我有两个表,my_table1和​​。MySql以特定方式查询结果

my_table1包含从1到10的数字,​​包含字母a,b,c和d。

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

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

一路直到结束。

是否有任何可能的方式在SQL中做到这一点?

在此先感谢。

回答

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

完美,非常感谢。在这种情况下,不需要对结果进行排序,所以如您所说,我省略了order by子句。 –