[英]SQL Using inner query in left join
我有下面的兩個表一和二
ONE TWO
ID ID CODE
----- ---------
1 1 1
2 1 2
3 2 1
4 3 1
5 3 2
3 3
ID CODE
----------
1 2
2 1
3 3
4 NULL
5 NULL
我使用了以下查詢,但引發了錯誤“ 與JOIN運算符或MERGE語句關聯的ON子句無效。 ”
SELECT A.ID
,B.CODE
FROM ONE A
LEFT JOIN
TWO B
ON A.ID = B.ID
AND B.CODE = (
SELECT
MAX(Z.CODE)
FROM TWO Z
WHERE Z.ID = A.ID
)
您可以使用聯接和聚合來完成此操作(如果我正確理解了邏輯):
select ONE.id, max(TWO.CODE)
from ONE left outer join
TWO
on ONE.id = TWO.id
group by ONE.id;
由於還標記了SQL Server,因此可以使用ROW_NUMBER
:
WITH CTE AS
(
SELECT ONE.ID, TWO.CODE,
RN = ROW_NUMBER() OVER (PARTITION BY ONE.ID ORDER BY TWO.CODE DESC)
FROM ONE LEFT OUTER JOIN TWO
ON ONE.ID=TWO.ID
)
SELECT ID, CODE FROM CTE WHERE RN = 1
SELECT A.ID
,B.CODE
FROM ONE A
LEFT outer JOIN
(select id,max(code) CODE from two group by id) B
ON A.ID = B.ID
我相信這就是您要尋找的...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.