Mysql 将两个表合并为一个表
我有两个表,两个表共享很少的列。我想加入他们,合并字段 我想查询它们,并根据创建的字段使用最新数据将它们合并到一行中 例如:Mysql 将两个表合并为一个表,mysql,join,merge,Mysql,Join,Merge,我有两个表,两个表共享很少的列。我想加入他们,合并字段 我想查询它们,并根据创建的字段使用最新数据将它们合并到一行中 例如: table1 [id, created, name, title, file, delete] table2 [id, created, name, title, old, active] # result [id, created, name, title, file, delete, old, active] 如何实现这一点?考虑到两个表之间的两个ID
table1 [id, created, name, title, file, delete]
table2 [id, created, name, title, old, active]
# result
[id, created, name, title, file, delete, old, active]
如何实现这一点?考虑到两个表之间的两个ID都是相同的,下面是您要查找的查询:
SELECT T1.id
,T1.created
,T1.name
,T1.title
,T1.file
,T1.delete
,T2.old
,T2.active
FROM table1 T1
INNER JOIN (SELECT TL.id
,MAX(TL.created) AS created
FROM table1 TL
GROUP BY TL.id) T ON T.id = T1.id
AND T.created = T1.created
INNER JOIN table2 T2 ON T2.id = T1.id
AND T2.created = T1.created
第一个内部联接用于在GROUPBY子句和MAX函数的每次id使用中仅保留最近出现的连接
希望这会有所帮助。您尝试过任何查询吗?不,我不知道从哪里开始。如果表在创建时有关系,为什么不使用内部联接?@Tushar-relation?意思内部联接只会联接表,不会过滤掉不需要的字段。不要使用这种老式的联接语法,而是使用显式联接子句!您的查询并没有提供预期的结果:基于创建的字段的最新数据第一个连接需要使用GROUP BY子句和MAX函数仅保留每个id最近出现的数据。通过使用内部连接,我确信我只保留了所需的行,第二个连接为我提供了我正在寻找的旧的和旧的附加信息active@yossi查询是否返回您期望的结果?为了使第一个内部连接子句更容易理解,我添加了一个简短的解释
SELECT a.id, a.created, a.name, a.title, a.file, a.delete, b.old, b.active
FROM table1 a,
table2 b
WHERE a.id = b.id