Evi*_*mes 27 sql t-sql sql-server sql-server-2008
我需要使用其关键ModelID从Models表中选择一个特定的模型.我还需要从Model_Content表中添加一些内容.但是,Models_Content表对每个模型都有几个内容模糊.我需要选择第一个模糊.
我的表看起来像这样:
Models // table
ModelID // pk
Model // varchar
Models_Content // table
ContentID // pk
ModelID // fk
Content // varchar
SELECT M.ModelID, M.Model, C.Content
FROM Models M LEFT JOIN Models_Content C ON M.ModelID = C.ModelID
WHERE M.ModelID = 5
Run Code Online (Sandbox Code Playgroud)
如何调整查询以选择特定模型的第一个内容模糊?
Mat*_*lie 51
SELECT
M.ModelID, M.Model, C.Content
FROM
Models M
LEFT JOIN
Models_Content C
ON C.ContentID = (SELECT MIN(ContentID) FROM Models_Content WHERE ModelID = M.ModelID)
WHERE
M.ModelID = 5
Run Code Online (Sandbox Code Playgroud)
要么
;WITH sorted_content AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY ModelID ORDER BY ContentID) AS itemID,
*
FROM
Models_Content
)
SELECT
M.ModelID, M.Model, C.Content
FROM
Models M
LEFT JOIN
sorted_content C
ON C.ModelID = M.ModelID
AND C.itemID = 1
WHERE
M.ModelID = 5
Run Code Online (Sandbox Code Playgroud)
肖恩的答案是最好的具体解决方案,但只是添加另一个"通用"解决方案
SELECT M.ModelID,
M.Model,
C.Content
FROM Models M
OUTER APPLY (SELECT TOP 1 *
FROM Models_Content C
WHERE M.ModelID = C.ModelID
ORDER BY C.ContentID ASC) C
WHERE M.ModelID = 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66476 次 |
| 最近记录: |