gpt4 book ai didi

mysql - 复杂的表合并

转载 作者:行者123 更新时间:2023-11-29 13:37:45 24 4
gpt4 key购买 nike

所以,作为一个彻头彻尾的 SQL 白痴,如果可能的话,我需要一些帮助。

假设我有两个表,组织如下:

map | authid | name | time | date | ... (other fields)

我正在尝试将两者合二为一。我希望替换一行当且仅当authid 和map 值相同。当需要合并一行时,应从时间值最低的表中检索所有其他字段中的值(当然旧字段值不需要保留,因为它们正在被替换) 。应附加其他表中具有不同映射或 authid 值的所有其他行。

我还需要以类似的方式合并其他两个表:

pid | type | distance | ... (other fields)

如果 pid 值和类型值相同,则需要替换该行。应保留的表值是距离值最大的值。如果 pid 或类型值不同,则应从另一个表附加新行。

最佳答案

这很快就拼凑在一起,需要继续工作,根本没有经过测试,用剩余的列名称替换 ...,更改 CREATE TABLE 行包括类型。根据您的数据库设置,可能还需要更明确的列引用。

CREATE TABLE t12 (map, authid, name, time, date, ...);

INSERT VALUES INTO t12 (
SELECT map, authid, name, time, date, ...
FROM (
SELECT map, authid, name, time, date, ...
FROM (
SELECT map, authid, name, time, date, ... FROM t1
UNION
SELECT map, authid, name, time, date, ... FROM t2
) AS tc
ORDER BY time DESC
) AS ts
GROUP BY map, authid
);

CREATE TABLE t34 (pid, type, distance, ...);

INSERT VALUES INTO t34 (
SELECT pid, type, distance, ...
FROM (
SELECT pid, type, distance, ...
FROM (
SELECT pid, type, distance, ... FROM t3
UNION
SELECT pid, type, distance, ... FROM t4
) AS tc
ORDER BY time DESC
) AS ts
GROUP BY pid, type
);

关于mysql - 复杂的表合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543187/

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