gpt4 book ai didi

mysql - SQL查询-使条件成为条件?

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

我有两个表(这些只是简化版本):

`Locations`:
id city country area
-- ---- ------- ----
71 C X E
72 C B E
73 C F G
74 L X E
75 M N O
76 M N E

`Findings`:
ID city country area resultVM
-- ---- ------- ---- --------
18 empty
19 C lam
20 X lam8
21 E pdg4

现在,我想根据这两个表中的数据编写一个插入来填充第三个表。它应该包含一次 Location 表中的所有 id(Summed.locations_id 显然是对 Locations.id 的引用),以及Findings 表中的匹配 resultVM。结果应该是:

`Summed`:
locations_id resultVM
------------ --------
71 lam
72 lam
73 lam
74 lam8
75 empty
76 pdg4

标准是:首先尝试匹配城市以在Findings表中查找结果VM,如果没有结果则匹配国家/地区,然后匹配区域,最后如果根本没有结果则匹配空行,其中没有城市/国家/地区已满。

目前,我正在对重复键执行 4 次插入/更新,但由于表非常大,因此需要花费大量时间。有谁知道这是否可以通过一次更新/插入/任何操作(在 MySQL 中)来完成?谢谢!

最佳答案

尝试:

INSERT INTO `Summed`
SELECT
`l`.`id`,
COALESCE(
`fcity`.`resultVM`,
`fcountry`.`resultVM`,
`farea`.`resultVM`,
`fempty`.`resultVM`)
FROM
`Locations` `l`
LEFT JOIN `Findings` `fcity` ON `l`.`city` = `fcity`.`city`
LEFT JOIN `Findings` `fcountry` ON `l`.`country` = `fcountry`.`country`
LEFT JOIN `Findings` `farea` ON `l`.`area` = `farea`.`area`
LEFT JOIN `Findings` `fempty` ON `fempty`.`city` = '' AND
`fempty`.`country` = '' AND
`fempty`.`area` = '';

SQL Fiddle demo

关于mysql - SQL查询-使条件成为条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33503670/

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