gpt4 book ai didi

sql - 使用 LEFT JOIN 只选择一个连接行

转载 作者:可可西里 更新时间:2023-11-01 07:33:50 25 4
gpt4 key购买 nike

我正在尝试左联接两个表,以获取 TABLE_1 中所有行的列表和 TABLE_2 中的一个相关行。我已经尝试过 LEFT JOIN 和 GROUP BY c_id,但是我不希望 TABLE_2 中的相关行按 isHeadOffice DESC 排序。

下面是一些示例表

TABLE 1
c_id Name
----------------
1 USA
2 Canada
3 England
4 France
5 Spain

TABLE2
o_id c_id Office isHeadOffice
------------------------------------------------
1 1 New York 1
2 1 Washington 0
3 1 Boston 0
4 2 Toronto 0
5 3 London 0
6 3 Manchester 1
7 4 Paris 1
8 4 Lyon 0

所以我想从中得到的是这样的:

RESULTS
c_id Name Office
----------------------------
1 USA New York
2 Canada Toronto
3 England Manchester
4 France Paris
5 Spain NULL

我正在使用 PHP 和 MySQL。有什么想法吗?

最佳答案

SELECT  *
FROM table1 t1
LEFT JOIN
table2
ON o.id =
(
SELECT o_id
FROM table2 t2
WHERE t2.c_id = t1.c_id
ORDER BY
t2.c_id DESC, t2.isHeadOffice DESC, t2.o_id DESC
LIMIT 1
)

table2 (c_id, isHeadOffice, o_id) 上创建索引以使其快速运行。

子查询中的 ORDER BY 子句看似多余,但 MySQL 需要它来选择正确的索引。

关于sql - 使用 LEFT JOIN 只选择一个连接行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510349/

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