我有两个不同的查询,例如
// 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/