Mysql 合并两个表中的数据,仅使用唯一行
我的数据库中有两个表Mysql 合并两个表中的数据,仅使用唯一行,mysql,sql,Mysql,Sql,我的数据库中有两个表 primary_id primary_date primary_measuredData temporary_id temporary_date temporary_measuredData 嗯。该表还有其他列,但这些是重要的列 我想要的是以下内容 表“主要”由已验证的测量数据组成。如果此处有数据可用,则输出应首先从主要中选择,如果主要中不可用,则从临时中选择 在大约99.99%的情况下,所有旧数据都在主表中,只有最后一天来自临时表 例如: primary table
primary_id
primary_date
primary_measuredData
temporary_id
temporary_date
temporary_measuredData
嗯。该表还有其他列,但这些是重要的列
我想要的是以下内容
表“主要”由已验证的测量数据组成。如果此处有数据可用,则输出应首先从主要中选择,如果主要中不可用,则从临时中选择
在大约99.99%的情况下,所有旧数据都在主表中,只有最后一天来自临时表
例如:
primary table:
2013-02-05; 345
2013-02-07; 123
2013-02-08; 3425
2013-02-09; 334
temporary table:
2013-02-06; 567
2013-02-07; 1345
2013-02-10; 31
2013-02-12; 33
我正在寻找输出以下内容的SQL查询:
2013-02-05; 345 (from primary)
2013-02-06; 567 (from temporary, no value available from prim)
2013-02-07; 123 (from primary, both prim & temp have this date so primary is used)
2013-02-08; 3425 (primary)
2013-02-09; 334 (primary)
2013-02-10; 31 (temp)
2013-02-12; 33 (temp)
您知道,没有重复的日期,如果数据在主表中可用,则使用该表中的数据
我不知道如何解决这个问题,所以我不能给你任何“这就是我到目前为止所做的:D”
谢谢
编辑:
“测量数据”的值可以不同于temp和primary。这是因为temp用于存储临时值,稍后验证数据后,它将进入主表
编辑2:
我更改了主表并添加了一个新列“临时”。因此,我将所有数据存储在同一个表中。当主数据更新时,它会用新的数字更新临时数据。这样,我就不需要将两个表合并为一个表。您应该从以下联合查询开始:
SELECT p.primary_date AS dt, p.primary_measuredData as measured
FROM
`primary` p
UNION ALL
SELECT t.temporary_date, t.temporary_measuredData
FROM
`temporary` t LEFT JOIN `primary` p
ON p.primary_date=t.temporary_date
WHERE p.primary_date IS NULL
没有匹配项(p.primary_date为NULL)的左联接将返回临时表中不在主表中的所有行。使用UNIONALL可以返回第一个表中可用的所有行
您可能希望在整个查询中添加ORDERBY子句。请参阅fiddle。这不会只显示主表中没有临时数据的行吗?@Konerak我修复了我的查询,需要左连接,但在临时表上而不是主表上