2017-12-27 95 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子句。 –