将2个MySQL结果与另一列合并
我有两个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-
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>