我有两个不同的表,如table1和table2。他们之间没有关系。
现在我想使用单个查询检索两个不同的字段,例如table1中的field1和table2中的field2。
从table1,table2中选择field1,group_concat(field2)。当我成功使用此查询数据时,如果第二个表有行,否则所有数据都为空
答案 0 :(得分:1)
执行此操作的方法是使用交叉连接。请注意,这会导致大量重复数据。
例如,如果表格包含以下数据:
Table 1
Field 1
1
2
3
Table2
Field 2
A
B
C
交叉连接(例如select table1.field1, table2.field2 from table1 cross join table2
)将返回:
Field 1, Field 2
1, A
2, A
3, A
1, B
2, B
3, B
1, C
2, C
3, C
由于每个表有三行,因此交叉连接返回3 x 3 = 9行。例如,如果您的表每行有100行,则查询将返回100 x 100 = 10,000行。如您所见,通过交叉连接,返回的数据量很快就会失控。
由于两个表之间没有任何关系,因此最好使用两个查询。
答案 1 :(得分:0)
SELECT tableA.row1,tableA.row2,tableB.row1,tableB.row2 来自tableA CROSS JOIN tableB;
答案 2 :(得分:0)
这取决于数据中究竟是什么。如果两个字段的类型相同,您可以查看UNION
。所以整体查询就像是
(SELECT field1 FROM table1) UNION (SELECT field2 FROM table2);
否则,如果您想要两个字段的叉积(因为它们之间没有关系),您可以使用JOIN
SELECT field1,field2 FROM table1 JOIN table2;