如何从没有唯一字段的两个不同表中获取记录

时间:2015-03-13 16:18:45

标签: mysql

我有两个不同的表,如table1和table2。他们之间没有关系。

现在我想使用单个查询检索两个不同的字段,例如table1中的field1和table2中的field2。

从table1,table2中选择field1,group_concat(field2)。当我成功使用此查询数据时,如果第二个表有行,否则所有数据都为空

3 个答案:

答案 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;