你这样做:
SELECT DISTINCT Content.content_name
FROM Language AS Language2
LEFT JOIN contents AS Content ON (Language2.language_id = Content.language_id)
那么,为什么这不回答你的问题?
让我们看看下面的数据(只是前两列):
content_name Name
XXXXX 1234
XXXXX 5678
SELECT DISTINCT
意味着你只需要一个行,但你要为名称什么?
你需要做的是重新编写代码来使用GROUP BY
和挑选其他列相应的聚合函数:
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
现在,很有可能这不会产生你想要任何东西,但有一点是确实,你不能欺骗数据库引擎“只选择一行返回,我不关心哪一行”。
+1好答案。您是否通过关闭content_name来关闭组? – 2010-04-27 11:53:45
是的,现在添加它,并重新格式化SQL。 – 2010-04-27 11:56:54
我也使用这种方法,但我总是觉得这样做很脏。 MIN和MAX真的是在这里做的正确的事情吗?其他数据库使用的其他数据库如mySQL和Oracle允许您为DISTINCT关键字选择单个列?他们在幕后做MIN/MAX吗? – emalamisura 2012-10-15 16:52:25