gpt4 book ai didi

mysql - 将两个表组合在一起以获得所有列,但我需要单独的数据行而不是一行

转载 作者:行者123 更新时间:2023-11-29 05:32:19 24 4
gpt4 key购买 nike

我需要一些帮助来弄清楚将两个表合并为一个表的 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 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   ColB1            ABC    XYZ     null             null   null                            1                111    222 

You can use UNION ALL like so:

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

如前所述,要简单地将两个表堆叠在一起,然后对齐列并使用 UNION ALL。如果您想删除重复项,可以使用 UNION

关于mysql - 将两个表组合在一起以获得所有列,但我需要单独的数据行而不是一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13693133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com