Mysql 将2条select语句重写为一条JOIN语句
我一直在纠结于一个JOIN语句,我搞不懂 我想在两个不同的表中获得最新(最新)的条目,并在输出中加入结果 这两个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
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