MYSQL查询:如何按顺序合并两个表

MYSQL查询:如何按顺序合并两个表,mysql,Mysql,有人能帮我解决这个问题吗?我一直在试图质疑这个问题,但我不断得到错误 MySQL代码: 各表: 图书用户 预订详情 结果应返回最新的返回日期,并按USR\U ID排序。 例如: 约翰,《崛起》,GHI,2012-06-12 简,购物狂,租一本书,2012-08-31 能源部,遗失,租一本书,2012-06-20 玛丽,新注册,租一本书,2012-02-02 该查询包含一个子查询,该子查询获取每个用户的最新返回日期 SELECT a.*, c.BOOK_TITLE, c.RETURN_DATE

有人能帮我解决这个问题吗?我一直在试图质疑这个问题,但我不断得到错误

MySQL代码:

各表:

图书用户 预订详情 结果应返回最新的返回日期,并按USR\U ID排序。 例如:

约翰,《崛起》,GHI,2012-06-12 简,购物狂,租一本书,2012-08-31 能源部,遗失,租一本书,2012-06-20 玛丽,新注册,租一本书,2012-02-02 该查询包含一个子查询,该子查询获取每个用户的最新返回日期

SELECT  a.*, c.BOOK_TITLE, c.RETURN_DATE
FROM    book_user a
        INNER JOIN
        (
            SELECT usr_ID, MAX(return_DATE) maxDate
            FROM booking_detail
            GROUP BY usr_ID
        ) b ON  a.usr_ID = b.usr_ID
        INNER JOIN booking_detail c
            ON  b.usr_ID = c.usr_ID AND
                b.maxDate = c.return_DATE
更新

使用左连接和合并

试试看:

SELECT *
FROM (
    (
        SELECT BU.*, BD.BOOK_TITLE, BD.BOOK_COMPANY AS COMPANY,BD.RETURN_DATE AS RETURN FROM BOOK_USER BU INNER JOIN BOOKING_DETAIL BD ON (BU.USR_ID = BD.USR_ID)
    ) UNION ALL (
        SELECT BU.*, BD.BOOK_TITLE, 'RENT-A-BOOK' AS COMPANY,BD.RETURN_DATE AS RETURN FROM BOOK_USER BU INNER JOIN BOOKING_DETAIL BD ON (BU.USR_ID = BD.USR_ID)
    )
) BU
GROUP BY BU.USR_ID

您可以使用以下查询直接获取输出检查查询:

SELECT BU.*, IFNULL(BD.BOOK_TITLE, 'NEW REGISTERED') AS BOOK_TITLE, IFNULL(BD.BOOK_COMPANY, 'RENT-A-BOOK') AS COMPANY,BD.RETURN_DATE AS RETURN 
FROM BOOK_USER BU
LEFT JOIN (SELECT * FROM (SELECT USR_ID, BOOK_TITLE, BOOK_COMPANY, RETURN_DATE FROM BOOKING_DETAIL ORDER BY RETURN_DATE DESC) AS A GROUP BY USR_ID) AS BD ON (BU.USR_ID = BD.USR_ID) 
ORDER BY BU.USR_ID;

+1要添加具有所需结果的样本记录,请指定此子项之间的差异。我发现两个查询中的条件都是相同的。@SaharshShah:如果公司名称列为空,我使用union返回公司名称作为租书。伙计们,我很抱歉。我已经编辑了我的问题,实际上是查询。这就是我现在遇到的问题。我很抱歉。我已经编辑了我的问题,实际上是查询。这就是我现在面临的问题,它对我不起作用。我的意思是,查询是有效的,但并不像预期的那样。事实上,我之前的查询还可以,只是它显示了每个usr_id的第一行。我想要最新的日期。也许你在加入时错过了什么。
SELECT  a.*, c.BOOK_TITLE, c.RETURN_DATE
FROM    book_user a
        INNER JOIN
        (
            SELECT usr_ID, MAX(return_DATE) maxDate
            FROM booking_detail
            GROUP BY usr_ID
        ) b ON  a.usr_ID = b.usr_ID
        INNER JOIN booking_detail c
            ON  b.usr_ID = c.usr_ID AND
                b.maxDate = c.return_DATE
SELECT  a.USR_ID,
        a.USR_NAME, 
        COALESCE(c.BOOK_TITLE,'RENT-A-BOOK') BOOK_TITLE, 
        COALESCE(c.RETURN_DATE, a.REGISTER_DATE) RETURN_DATE
FROM    book_user a
        LEFT JOIN
        (
            SELECT usr_ID, MAX(return_DATE) maxDate
            FROM booking_detail
            GROUP BY usr_ID
        ) b ON  a.usr_ID = b.usr_ID
        LEFT JOIN booking_detail c
            ON  b.usr_ID = c.usr_ID AND
                b.maxDate = c.return_DATE
SELECT *
FROM (
    (
        SELECT BU.*, BD.BOOK_TITLE, BD.BOOK_COMPANY AS COMPANY,BD.RETURN_DATE AS RETURN FROM BOOK_USER BU INNER JOIN BOOKING_DETAIL BD ON (BU.USR_ID = BD.USR_ID)
    ) UNION ALL (
        SELECT BU.*, BD.BOOK_TITLE, 'RENT-A-BOOK' AS COMPANY,BD.RETURN_DATE AS RETURN FROM BOOK_USER BU INNER JOIN BOOKING_DETAIL BD ON (BU.USR_ID = BD.USR_ID)
    )
) BU
GROUP BY BU.USR_ID
SELECT BU.*, IFNULL(BD.BOOK_TITLE, 'NEW REGISTERED') AS BOOK_TITLE, IFNULL(BD.BOOK_COMPANY, 'RENT-A-BOOK') AS COMPANY,BD.RETURN_DATE AS RETURN 
FROM BOOK_USER BU
LEFT JOIN (SELECT * FROM (SELECT USR_ID, BOOK_TITLE, BOOK_COMPANY, RETURN_DATE FROM BOOKING_DETAIL ORDER BY RETURN_DATE DESC) AS A GROUP BY USR_ID) AS BD ON (BU.USR_ID = BD.USR_ID) 
ORDER BY BU.USR_ID;