我有兩個表,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中做到這一點?
在此先感謝。
我有兩個表,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中做到這一點?
在此先感謝。
這是一個交叉連接。您可以通過選擇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
這是一個CROSS JOIN
,在MySQL相當於INNER JOIN
或常規逗號:
SELECT * FROM my_table1, my_table2;
完美,非常感謝。在這種情況下,不需要對結果進行排序,所以如您所說,我省略了order by子句。 –