如何排除某一字段中有重复项的行
我有一个非常简单的任务,但我找不到任何解决方案。我有两个表,“文章”和“类别”
我的文章表如下所示:
id | cat_id | title | content
1 1 Blah Content 1
2 1 Blah2 Content 2
3 2 Blah3 Content 3
我的类别表如下所示:
id | title
1 Category 1
2 Category 2
您看,我有 2 篇具有相同 cat_id 的文章。我不想使用重复的 cat_id 字段。我不能使用 DISTINCT,因为我将获取所有文章,因为我想要所有字段。
所以如果我像这样使用 DISTINCT:
SELECT DISTINCT a.id, a.cat_id, a.title, a.content FROMarticles AS a
我会得到所有内容,但我想要这样的输出
id | cat_id | title | content
2 1 Blah2 Content 2
3 2 Blah3 Content 3
有人可以帮助我吗!
I have a very simple task, but I cannot find any solution. I have two tables, 'articles' and 'categories'
My article table look like this:
id | cat_id | title | content
1 1 Blah Content 1
2 1 Blah2 Content 2
3 2 Blah3 Content 3
My categories table look like this:
id | title
1 Category 1
2 Category 2
You see I have 2 articles that have the same cat_id. I do not want with duplicate cat_id field. I cannot use DISTINCT, because I will get all articles, because I want all fields out.
so if i use DISTINCT like this:
SELECT DISTINCT a.id, a.cat_id, a.title, a.content FROM articles AS a
I will get everything out, but I want output like this
id | cat_id | title | content
2 1 Blah2 Content 2
3 2 Blah3 Content 3
Can someone help me please !!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
此查询将从每个类别中选择第一篇文章(最低 ID),
它与所有其他文章进行外连接。 join 子句仅连接具有相同类别且 ID 较小的文章。如果没有匹配项(a2.id 为 NULL),则我们将获得该类别 ID 最小的文章。
This query will select the first article (lowest id) from each category
It does an outer join with all other articles. The join clause only joins articles with the same category and with a smaller ID. When there are no matches (a2.id is NULL), then we have the article with the lowest ID for that category.
试试这个:
或者:
两者都为每个不同的 cat_id 选择一个文章 id(使用 min()),并仅选择具有这些 id 的记录。
Try this:
or:
Both select one article id (using min()) for each distinct cat_id and select only the records with these ids.
未经测试,但应该可以工作:
Not tested, but should work: