gpt4 book ai didi

mysql - 使用每个表中最高的 id 将两个表中的信息合并到一个表中

转载 作者:行者123 更新时间:2023-11-29 09:55:58 32 4
gpt4 key购买 nike

我有两张 table 。

表 A 有一个唯一的 keyid 列和一个标识个人的 uid 列。每个 uid 有多行。

表 B 与表 A 相同,但表 A 中不存在其所有其他列。

我将创建一个表 C,其中包含表 A 和表 B 的所有信息

我想要的是一个查询,它从 Tabla A 中获取最高的 keyid,并从表 B 中为每个 uid 获取最高的 keyid,然后插入到表 C 中。

如何编写这样的查询?

编辑:这是一些包含两个表和我想要的示例

TABLE A
keyid | uid | name | likes
-----------------------------
1 15 John nothing
2 15 John something
3 32 Jane or other

TABLE B
keyid | uid | fruit |
-----------------------------
1 15 oranges
2 32 banana
3 32 apple


TABLE C (resulting query)
uid | name | likes | fruit
-------------------------------
15 John something oranges
32 Jane or other apple

最佳答案

MySQL 或其他支持 row_number() over() 的数据库的替代方案

CREATE TABLE TableA(
keyid INTEGER NOT NULL PRIMARY KEY
,uid INTEGER NOT NULL
,name VARCHAR(20) NOT NULL
,likes VARCHAR(40) NOT NULL
);
INSERT INTO TableA(keyid,uid,name,likes) 
VALUES
(1,15,'John','nothing'),
(2,15,'John','something'),
(3,32,'Jane','or other');
CREATE TABLE TableB(
keyid VARCHAR(30) NOT NULL PRIMARY KEY
,uid INTEGER NOT NULL
,fruit VARCHAR(40) NOT NULL
);
INSERT INTO TableB(keyid,uid,fruit)
VALUES
(1,15,'oranges'),
(2,32,'banana'),
(3,32,'apple');
select
a.uid, a.name, a.likes, b.fruit
from (
select *, row_number() over(partition by uid order by keyid DESC) rn
from TableA
) a
inner join (
select *, row_number() over(partition by uid order by keyid DESC) rn
from TableB
) b on a.uid = b.uid and b.rn = 1
where a.rn = 1
uid | name | likes     | fruit  --: | :--- | :-------- | :------ 15 | John | something | oranges 32 | Jane | or other  | apple  

db<> fiddle here

关于mysql - 使用每个表中最高的 id 将两个表中的信息合并到一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53842519/

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