2010-12-19 17 views

Antwort

9

können Sie die CROSS JOIN verwenden Klausel

SELECT MyTable1.Col1, MyTable2.Col2 
FROM MyTable1 
CROSS JOIN MyTable2 

wo MyTable1 zwei Reihen hat cont aining 1 und 2; und MyTable2 hat zwei Reihen, die 3 und 4.

+7

'cross join' ==' inner join' [MySQL 5.0] (http://dev.mysql.com/doc/refman/5.0/en/join.html) – bobobobo

+4

Noch mehr, cross join == inner join = = beitreten –

+2

In MySQL sind JOIN, CROSS JOIN und INNER JOIN syntaktische Äquivalente, die nicht identisch sind. INNER JOIN und, (Komma) sind in Abwesenheit einer Join-Bedingung semantisch äquivalent: Beide erzeugen ein kartesisches Produkt zwischen den angegebenen Tabellen (dh jede Zeile in der ersten Tabelle ist mit jeder Zeile in der zweiten Tabelle verbunden Tabelle). Also Join == innere Join aber nicht wahr für Cross Join == innere Join – mokNathal

1
select v1, v2 
from 
    (select 1 as v1 union 
    select 2) t1, 
    (select 3 as v2 union 
    select 4) t2 

oder noch einfacher:

select * 
from 
    (select 1 union 
    select 2) t1, 
    (select 3 union 
    select 4) t2 
12

Wenn Sie Ihre Tabellen ohne jede JOIN ON Klausel oder Gleichheiten/conditionins in der WHERE Klausel angeben Sie erhalten das catesische Produkt, nach dem Sie suchen.

SELECT table1.field1, table2.field2 
FROM table1, table2 

wird Ihnen geben, was Sie verlangen. Zeige es ausdrücklich mehr ...

SELECT * FROM table1; 
+--------+ 
| field1 | 
+--------+ 
|  1 | 
|  2 | 
+--------+ 

SELECT * FROM table2; 
+--------+ 
| field2 | 
+--------+ 
|  3 | 
|  4 | 
+--------+ 

SELECT table1.field1, table2.field2 FROM table1, table2; 
+--------+--------+ 
| field1 | field2 | 
+--------+--------+ 
|  1 |  3 | 
|  2 |  3 | 
|  1 |  4 | 
|  2 |  4 | 
+--------+--------+ 
0

Mit der Verwendung dieses Ihr Format ist nicht, wie Sie A(1,2) and B(3,4) dann die Kreuz sagen verbinden es wie folgt durchführen wird:

SELECT Table1.Col1, Table2.Col2 
FROM Table1 
CROSS JOIN Table2 

(A*B)= (1,3),(1,4),(2,3),(2,4)

Verwandte Themen