gpt4 book ai didi

MySQL:在一个查询中使用左连接和联合

转载 作者:行者123 更新时间:2023-11-29 08:10:54 25 4
gpt4 key购买 nike

我有两个名为 tblborrow 和 tblreturn 的表,其中它们都有日期列。

现在,我想做的是按联合中的 date_borrowed 和 date_returned 顺序显示 tblborrow 和 tblreturn 中的几乎所有列。

我的 tblborrow 包含以下列:

  • borrow_id
  • 书号
  • member_id
  • staff_id
  • 借用日期

虽然 tblreturn 包含:

  • return_id
  • borrow_id
  • staff_id
  • 返回日期

我已经使用以下方法通过左连接显示它们:

SELECT a.isbn, a.member_id, a.staff_id, a.date_borrowed, b.staff_id, b.date_returned
FROM tblborrow AS a left join tblreturn AS b on a.borrow_id = b.borrow_id
ORDER BY date_borrowed, date_returned

它给了我我所需要的东西,当然,除了 date_returned 和 date_borrowed 显示在单独的列中。

现在我尝试对它们使用 UNION,测试它是否也能满足我的需要,所以我使用了:

SELECT date_borrowed FROM tblborrow
UNION ALL
SELECT date_returned FROM returning

确实如此。但我需要这些仅在一个查询中。我尝试简单地组合这样的查询:

SELECT a.isbn, a.member_id, a.staff_id, b.staff_id,
(SELECT date_borrowed FROM tblborrow
UNION ALL
SELECT date_returned FROM returning)
FROM tblborrow AS a left join tblreturn AS b on a.borrow_id = b.borrow_id
ORDER BY date_borrowed, date_returned

但它说“子查询返回超过 1 行”,经过大量彻底的 Google 搜索后我似乎仍然无法做到这一点。

有人帮忙吗?提前致谢!

最佳答案

如果您想分隔借用/返回组合的行,那么 union all 是合适的。如果是这样,我认为这符合您的要求:

SELECT b.isbn, b.member_id, b.staff_id, date_borrowed, 'borrow' as which
FROM tblborrow b
UNION ALL
SELECT b.isbn, b.member_id, r.staff_id, date_returned, 'return' as which
FROM tblreturn r join
tblborrow b
on r.borrw_id = b.borrow_id;

关于MySQL:在一个查询中使用左连接和联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21647981/

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