Mysql 将2条select语句重写为一条JOIN语句

Mysql 将2条select语句重写为一条JOIN语句,mysql,join,Mysql,Join,我一直在纠结于一个JOIN语句,我搞不懂 我想在两个不同的表中获得最新(最新)的条目,并在输出中加入结果 这两个Select语句看起来是这样的,它们的工作方式与预期的一样,但当我尝试将它们重新编译为JOIN语句时,似乎无法得到正确的结果 请帮忙,谢谢 SELECT MaxNum FROM table1 WHERE UserID = 4 ORDER BY Date DESC LIMIT 1 SELECT MinNum FROM table2 WHERE UserID = 4 ORDER

我一直在纠结于一个JOIN语句,我搞不懂

我想在两个不同的表中获得最新(最新)的条目,并在输出中加入结果

这两个Select语句看起来是这样的,它们的工作方式与预期的一样,但当我尝试将它们重新编译为JOIN语句时,似乎无法得到正确的结果

请帮忙,谢谢

SELECT MaxNum 
FROM table1 
WHERE UserID = 4
ORDER BY Date DESC
LIMIT 1

SELECT MinNum 
FROM table2 
WHERE UserID = 4
ORDER BY Date DESC
LIMIT 1

由于每个查询只返回一行,您可以使用的一个肮脏技巧是
交叉连接
结果:

SELECT MaxNum, MinNum
FROM   (SELECT   MaxNum 
        FROM     table1 
        WHERE    UserID = 4
        ORDER BY Date DESC
        LIMIT    1) t 
CROSS JOIN (SELECT   MinNum 
            FROM     table2 
            WHERE    UserID = 4
            ORDER BY Date DESC
            LIMIT    1) s

我不确定连接在这里是否一定有意义。但是,您可以在一个查询中稍微修改当前必须执行的操作:

SELECT
    (SELECT MaxNum FROM table1 WHERE UserID = 4 ORDER BY Date DESC LIMIT 1) AS MaxNum,
    (SELECT MinNum FROM table2 WHERE UserID = 4 ORDER BY Date DESC LIMIT 1) AS MinNum

如果要将结果显示为一行,请将查询用作
FROM
子句中的子查询

SELECT *
FROM 
  (SELECT MaxNum FROM table1 WHERE UserID = 4 ORDER BY `Date` DESC LIMIT 1) AS q1,
  (SELECT MinNum FROM table2 WHERE UserID = 4 ORDER BY `Date` DESC LIMIT 1) AS q2;

您也可以使用union在City.StateCode=states.code where states.code='AL'上选择Max(states.Id),Max(City.Id)from states内部连接City,这是您需要的吗?表2日期也必须按降序排序
select TOP 1 table1.MaxNum, table2.MinNum 
FROM table1 INNER JOIN table2 
ON table1.UserID = table2.UserID 
WHERE table1.UserID = 4 
ORDER BY table1.Date DESC