Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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_Sql - Fatal编程技术网

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我修复了我的查询,需要左连接,但在临时表上而不是主表上