Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将两个表合并为一个表_Mysql_Join_Merge - Fatal编程技术网

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