【问题标题】:MySQL - Select all rows where an N quantity of distinct records are atMySQL - 选择 N 数量的不同记录所在的所有行
【发布时间】:2018-12-26 11:01:50
【问题描述】:

我有一张包含地址、日期和其他信息的表格。

我想选择一个N 唯一数量的地址,并且在N 记录中,我想从该地址所在的所有行中选择所有内容,因为该地址不是该列中的唯一值。

Date      |     Address       |    MoreInfo
1/2/2000  |   123 SUPER LN    |   SOME MORE BORING INFO
2/3/2000  |   123 SUPER LN    |   SOME MORE BORING INFO
5/3/2000  |   567 AWESOME ST  |   SOME MORE BORING INFO
5/26/2000 |   567 AWESOME ST  |   SOME MORE BORING INFO
7/2/2000  |   987 SUPER LN    |   SOME MORE BORING INFO
8/3/2000  |   1100 BORING DR  |   SOME MORE BORING INFO
11/7/2000 |   1100 BORING DR  |   SOME MORE BORING INFO
1/5/2001  |   564 SUPER LN    |   SOME MORE BORING INFO

因此,对于该数据,我想获取 3 个不同的地址 (123 SUPER LN, 567 AWESOME ST, 987 SUPER LN) 并从这 3 个地址所在的所有行中获取所有内容。

我有一个疑问:

SELECT *
FROM my_table
WHERE my_condition = true
GROUP BY address

但这只会为每个地址带来 1 行,我想获取那些 N 地址所在的所有行。谢谢!

【问题讨论】:

  • 您问题的措辞有些混乱。您能否添加一些示例数据来解释您要做什么?
  • 不确定我理解你想要什么,你能发布一个数据样本(开始和预期结果)
  • 不要投反对票,我认为他的第一语言似乎不是英语

标签: mysql sql select distinct-values


【解决方案1】:

我想这就是你想要的:

select t.*
from (select distinct address
      from my_table
      where my_condition = true
      limit 100  -- this is the N
     ) a join
     my_table t
     on a.address = t.address;

第一个子查询获取地址列表。 join 带回原来的行。

【讨论】:

  • 正是我需要的!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多