2017-05-26 103 views
1

我一直在用我無法弄清楚的JOIN語句進行操作。將2條SELECT語句重寫爲一條JOIN語句

我想在兩個不同的表中獲取最新(最新)條目並將結果連接到輸出中。

2選擇語句看起來像這樣,他們按預期工作,但我似乎無法得到正確的結果,當我試圖將它們重新作爲一個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 
+1

可以使用工會以及 – inarilo

+0

各國 選擇MAX(states.Id),MAX(City.id) 內加入市City.StateCode = states.code 哪裏的狀態。代碼='AL',這是你需要的東西嗎? –

回答

0

由於這些查詢只返回一個行,一個骯髒的把戲,你可以使用是cross join結果:

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 
1

我不知道,一個加入一定有道理這裏。但是,您可以稍微修改一下你目前必須是一個查詢:

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 
0

如果你想顯示結果爲一排,然後在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; 
0
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 
+0

表2日期也必須按降序排序 – inarilo