Mysql 将两个表组合在一起以获得所有列,但我需要单独的数据行,而不是一行
我需要一些帮助,找出将两个表合并为一个表的SQL。我想合并这些表,并在每个表的不同行上显示数据,但我下面的内容只显示一行 以下是表格:Mysql 将两个表组合在一起以获得所有列,但我需要单独的数据行,而不是一行,mysql,sql,Mysql,Sql,我需要一些帮助,找出将两个表合并为一个表的SQL。我想合并这些表,并在每个表的不同行上显示数据,但我下面的内容只显示一行 以下是表格: CREATE TABLE tenant_invoices( invoice_id INT, col1 INT, col2 INT ) CREATE TABLE tenant_payments( pmt_invoice_id INT, colA INT, colB INT ) 以下是我需要创建的临时表: CREATE TEMPORARY
CREATE TABLE tenant_invoices(
invoice_id INT,
col1 INT,
col2 INT
)
CREATE TABLE tenant_payments(
pmt_invoice_id INT,
colA INT,
colB INT
)
以下是我需要创建的临时表:
CREATE TEMPORARY TABLE tenant_invoices
SELECT * FROM invoices
CREATE TEMPORARY TABLE tenant_payments
SELECT * FROM payments
select ti.*, tp.*
from tenant_invoices ti
left join tenant_payments tp
on ti.invoice_id = tp.pmt_invoice_id
ORDER BY ti.invoice_date DESC;
这将导致两个表合并在一起,但只创建一行:
invoice_id col1 col2 pmt_invoice_id colA ColB
1 ABC XYZ 1 111 222
我希望该表能够将表合并在一起,这样我就可以得到所有的列,但我希望将行分开,而不是一行合并数据,这样我就可以以更符合逻辑的方式循环数据:
invoice_id col1 col2 pmt_invoice_id colA ColB
1 ABC XYZ null null null
1 111 222
有没有一种方法可以通过SQL实现这一点
谢谢。为了达到这个效果 invoice_id col1 col2 pmt_invoice_id colA ColB 1 ABC XYZ null null null 1 111 222
如前所述,要简单地将两个表堆叠在一起,然后对齐列并使用
UNION ALL
。如果你想删除重复项,你可以使用UNION
+1,因为我认为这正是他在第二次审查问题时想要的。这太完美了!非常感谢你!
SELECT invoice_id, col1, col2, NULL AS pmt_invoice_id, NULL AS colA, NULL AS col
FROM tenant_invoices
UNION ALL
SELECT NULL, NULL, NULL, pmt_invoice_id, colA, colB
FROM tenant_payments