【问题标题】:MySQL SELECT colums where both columns are uniqueMySQL SELECT 列,其中两列都是唯一的
【发布时间】:2015-11-23 19:37:32
【问题描述】:

我有下表。

id title  content
1  title1 content1
2  title1 content2
3  title1 content3
4  title2 content1
5  title2 content2
6  title2 content3
7  title3 content1

我想要的结果只是第一行,因为对于所有其他行,标题或内容都不是唯一的。这就是我想要的:

id title  content
1  title1 content1
5  title2 content2

编辑:第 5 行也是独一无二的

我只想在标题唯一(尚未选择)和内容也是唯一(尚未选择)时显示行/列。如何做到这一点?

Group by 给我以下结果

`SELECT * FROM `posts` GROUP BY title`

id title  content
1  title1 content1
4  title2 content1
7  title3 content1

所以这也显示了第 4 行和第 7 行,但它们的内容不是唯一的

 `SELECT * FROM `posts` GROUP BY title, content`

显示所有行。

如何得到我想要的结果?

我在考虑子查询,但这不是一个选项,因为上下文是 WP_query()。

提前致谢。

**编辑:查看我的 cmets 以获得更多说明

第 1 行并不独特。但它应该显示第一个结果,然后它应该只显示唯一的结果。第 2 行和第 3 行不应显示,因为标题相同且已在结果中(第 1 行) 第 4 行不应显示,因为该内容已在第 1 行中。第 5 行应按 pjd 第 6 行和7 不应因标题或内容不唯一而显示。

第 5 行确实是独一无二的,好地方。第 1 行也更权威,因为它是第一个结果。但是顺序并不重要。**

【问题讨论】:

  • 是什么让1 title1 content12 title1 content2 更独特?我不明白你的业务规则。
  • 我不关注。第 1 行的标题和内容在什么意义上是独一无二的?还有另外两行标题相同,另外两行内容相同。
  • 他想停止选择1 title1 content1 之后的内容,因为结果已经返回,并且所有其他记录都包含title1content1
  • 啊,你的意思是你想要第一个。在将第一次出现的“title1”“添加”到结果集中后,第二个将不再是唯一的。注意,为什么子查询在WP_Query 中不是一个选项?我怀疑你是否可以在一个简单的查询中合理地解决这个问题。
  • 与第 1 行相比,第 5 行是否被认为是唯一的:title2 content2?而且,正如@GolezTrol 所提到的,为什么第 1 行被认为是“权威”的唯一行而不是其他行?

标签: mysql sql group-by unique


【解决方案1】:

你可以的

SELECT * from posts GROUP BY title HAVING count(*) = 1
INTERSECT
SELECT * from posts GROUP BY content HAVING count(*) = 1;

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    相关资源
    最近更新 更多