如何在 SQl Server 2008 中选择不同的但仅从众多字段中选择一个? [英] How to select distinct in SQl Server 2008 but for only one field out of many?
问题描述
我有一个疑问:
SELECT Content.content_name, Language2.Name, Language2.language_id,
Content.id, Content.content_description,
FROM Language AS Language2
LEFT JOIN contents AS Content ON (Language2.language_id = Content.language_id)
如何只选择不同的 content_name?
How do I select only the distinct content_name?
推荐答案
你这样做:
SELECT DISTINCT Content.content_name
FROM Language AS Language2
LEFT JOIN contents AS Content ON (Language2.language_id = Content.language_id)
那么为什么这不能回答您的问题?
So why does this not answer your question?
让我们考虑以下数据(仅前两列):
Let's consider the following data (just the first two columns):
content_name Name
XXXXX 1234
XXXXX 5678
SELECT DISTINCT
意味着您只需要一行,但是您想要什么名称?
SELECT DISTINCT
implies you only want one row, but what do you want for Name?
您需要做的是重写代码以使用 GROUP BY
并为其他列选择适当的聚合函数:
What you need to do is rewrite the code to use GROUP BY
and pick the appropriate aggregate function for the other columns:
SELECT
Content.content_name,
MIN(Language2.Name) AS Name,
MIN(Language2.language_id) AS language_id,
MIN(Content.id) AS id,
MIN(Content.content_description) AS content_description,
FROM
Language AS Language2
LEFT JOIN contents AS Content
ON (Language2.language_id = Content.language_id)
GROUP BY
Content.content_name
现在,这可能也不会产生您想要的结果,但有一件事是肯定的,您不能欺骗数据库引擎只是选择要返回的行之一,我不在乎是哪一行."
Now, likely this does not produce what you want either, but one thing is for certain, you can not trick the database engine to just "pick one of the rows to return, I don't care which one."
这篇关于如何在 SQl Server 2008 中选择不同的但仅从众多字段中选择一个?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!