Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
将2个MySQL结果与另一列合并_Mysql_Sql - Fatal编程技术网

将2个MySQL结果与另一列合并

将2个MySQL结果与另一列合并,mysql,sql,Mysql,Sql,我有两个MySQL查询,生成了以下两个结果: SELECT * FROM `full_schedule`; 结果: Date | Time ____________________ 27-06-2017 | 0800 27-06-2017 | 0900 27-06-2017 | 1000 27-06-2017 | 1100 27-06-2017 | 1200 27-06-2017 | 1300 27-06-2017 | 0800 28-06-2017 | 0900 28-06-

我有两个MySQL查询,生成了以下两个结果:

SELECT * FROM `full_schedule`; 
结果:

    Date   | Time
____________________ 
27-06-2017 | 0800
27-06-2017 | 0900
27-06-2017 | 1000
27-06-2017 | 1100
27-06-2017 | 1200
27-06-2017 | 1300
27-06-2017 | 0800
28-06-2017 | 0900
28-06-2017 | 1000
28-06-2017 | 1100
28-06-2017 | 1200
28-06-2017 | 1300
以及:

结果:

    Date   | Time 
___________________ 
27-06-2017 | 0800
27-06-2017 | 0900
28-06-2017 | 1000
问题1: 如何交叉检查这两个结果,并使用如下所示的加法列生成结果

问题2: 是否可以将所有查询合并为1

    Date   | Time | Status
___________________________ 
27-06-2017 | 0800 | 1
27-06-2017 | 0900 | 1
27-06-2017 | 1000 | 0
27-06-2017 | 1100 | 0
27-06-2017 | 1200 | 0
27-06-2017 | 1300 | 0
27-06-2017 | 0800 | 0
28-06-2017 | 0900 | 0
28-06-2017 | 1000 | 1
28-06-2017 | 1100 | 0
28-06-2017 | 1200 | 0
28-06-2017 | 1300 | 0

您可以使用以下代码:

 (SELECT f.*, 0 as Status FROM full_schedule as f)
 UNION
 (SELECT a.*, 1 as Status from available_schedule as a);

正如你们所看到的,你们两个问题的答案都是肯定的。您可以添加一个额外的列(用于回答第一个问题),并在最终结果中删除每个表的副本时使用
UNION
组合结果集。

假设您的表的基数为完整\u计划1:1可用\u计划,您可以执行左联接,并根据右侧表中是否存在任何列(本例中可用的\u计划),为状态创建计算字段:

选择一个日期,
A.时间,
(当B.时间为空时,则为0,否则为1结束)作为状态
从完整的附录A
左连接
附表B
A.日期=B.日期
A.Time=B.Time

我可以知道如何设置a中的1。状态始终覆盖f。状态吗?不。它不会覆盖任何内容。结果会和你写的一模一样。
 (SELECT f.*, 0 as Status FROM full_schedule as f)
 UNION
 (SELECT a.*, 1 as Status from available_schedule as a);
SELECT A.Date,
       A.Time,
       (case when B.Time IS NULL then 0 else 1 end) as Status
FROM   full_schedule A
LEFT JOIN
       available_schedule B
ON     A.Date=B.Date
AND    A.Time=B.Time
<YOUR_WHERE_CLAUSE>