MySQL join 两个独立的查询结果

标签 mysql

我有两个不同的查询,例如

// This query will return past month records
SELECT b.list_id, r.name, r.city, FROM_UNIXTIME(b.bookingdate, '%Y-%m-%d- %h:%i:%s') AS 'bookingdate', COUNT(*) AS bookings
FROM booking b JOIN restaurants r ON r.list_id = b.list_id
WHERE b.bookingdate BETWEEN 1383224400 AND 1385730000 GROUP BY b.list_id

// This query will return current month records
SELECT b.list_id, r.name, r.city, FROM_UNIXTIME(b.bookingdate, '%Y-%m-%d- %h:%i:%s') AS 'bookingdate', COUNT(*) AS bookings
FROM booking b JOIN restaurants r ON r.list_id = b.list_id
WHERE b.bookingdate BETWEEN 1385816400 AND 1388408400 GROUP BY b.list_id

两个查询的结果字段 list_id、姓名、城市、预订日期、预订

我想将两个查询结果合并为一个,并希望结果字段像 list_id、姓名、城市、预订日期、bookings_lastmonth、bookings_currentmonth

执行此操作的最佳方法是什么?

最佳答案

使用 UNION 属性:-

SELECT b.list_id, r.name, r.city, FROM_UNIXTIME(b.bookingdate, '%Y-%m-%d- %h:%i:%s') AS 'bookingpreviousdate', '0' AS bookingnextdate, COUNT(*) AS bookings
FROM booking b JOIN restaurants r ON r.list_id = b.list_id
WHERE b.bookingdate BETWEEN 1383224400 AND 1385730000 GROUP BY b.list_id
UNION
SELECT b.list_id, r.name, r.city, '0' AS 'bookingpreviousdate', 'FROM_UNIXTIME(b.bookingdate, '%Y-%m-%d- %h:%i:%s')' AS bookingnextdate, COUNT(*) AS bookings
FROM booking b JOIN restaurants r ON r.list_id = b.list_id
WHERE b.bookingdate BETWEEN 1385816400 AND 1388408400 GROUP BY b.list_id

关于MySQL join 两个独立的查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20486935/

相关文章:

java - 使用 Hibernate 在外键字段中插入空值

MySQL:修改字段的输出以进行计算

C# 和 MySQL .NET 连接器 - 有什么方法可以防止泛型类中的 SQL 注入(inject)攻击?

mysql - 将 MySQL 数据从 Yes/No varchar 迁移到位字段

MYSQL 服务器 - 如果不为空则只更新值

c# - SQL查询在转换日期后更改列名

mysql - 尝试递归地检索表的总和

mysql - 从一个表中选择与另一个表没有关系的那些

java - 您可以使用图片的 URL 将图像添加到 GUI 中吗?

mysql - 显示MySQL数据库中保存为base64/blob的图像