.net 为以下场景设计查询
我有两张桌子——表1:.net 为以下场景设计查询,.net,sql,sql-server,tsql,stored-procedures,.net,Sql,Sql Server,Tsql,Stored Procedures,我有两张桌子——表1: id name number ------------------ 1 x1 123 2 x2 234 …和表2: tbl1id title rank -------------------- 1 t1 3 1 t2 2 2 t1 3 1 t3 1 有没有一种方法可以让我加入他们,返回基于给定用户的最小排名显示最大标题的结果: id name num
id name number
------------------
1 x1 123
2 x2 234
…和表2:
tbl1id title rank
--------------------
1 t1 3
1 t2 2
2 t1 3
1 t3 1
有没有一种方法可以让我加入他们,返回基于给定用户的最小排名显示最大标题的结果:
id name number max_title rank
----------------------------------
1 x1 123 't3' 1
2 x2 234 't1' 3
问题更新
SELECT t1.id, t1.name, t1.number, MAX(t2.title)
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.id = t2.tbl1id
GROUP BY t1.id, t1.name, t1.number
编辑:-更新为使用左连接,以防表2中可能没有给定id的记录。
-答案现在是不相关的,因为问题已经改变,因为原来的一个。离开历史记录。使用:
SELECT t.id,
t.name,
t.number,
COALESCE(x.max_title, 'no title associated') AS max_title
FROM TABLE1 t
LEFT JOIN (SELECT t2.tbl1id,
MAX(t2.title) 'max_title'
FROM TABLE2 t2
WHERE t2.rank = (SELECT MIN(rank)
FROM TABLE2
WHERE tbl1id = t2.tbl1id)
GROUP BY t2.tbl1id) x ON x.tbl1id = t.id
很抱歉,我更新了问题,但我之前的问题你是对的,没有提到这些表之间的真正关系。但是,如果“表2”中可能没有id的记录,那么只需要左连接即可。