【问题标题】:Mysql select distinct but limit the distinct valuesMysql选择不同但限制不同的值
【发布时间】:2011-07-15 00:26:39
【问题描述】:

这可能令人困惑,但我想做的是一个基本的 select distinct columnx 限制 3,我遇到的问题是它返回 3 行,但我只想从一个不同的 columnx 中获取所有值。

id|columnx  
1 |here  
2 |here  
3 |Idontwant  
4 |Apple

所以我想要一个返回 1 和 2 的查询。问题是 columnx 可以是任何东西,我不能只说 where columnx = 'here'

限制 3 开始发挥作用,因为它被硬编码到我的 C# 应用程序中。问题是我还基于 columnx 设置了一个哈希集,我必须让所有记录的 columnx 都是静态的。但是,对于我汇总的每个查询,有可能在我的限制下,我将在 columnx 中返回 2 个值,它们是不同的值,但是,我每个查询只能有不同的 columnx 值。

不,我想要的是属于 columnx 的所有值,在此示例中,columnx ='here',当我执行不同的操作时,我想要返回的是第一个不同的结果,而不是“Idontwan”或“apple”,无论限制。

这是查询,它有效。

SELECT id,columnx
FROM sites where columnx= (select distinct columnx from sites limit 1) limit 3

【问题讨论】:

  • 你说得对,这令人困惑 :) 我很确定我不明白你在问什么。 LIMIT 3 在哪里发挥作用?以及你想成为DISTINCT的哪些专栏?
  • 查看编辑希望有帮助

标签: mysql


【解决方案1】:

听起来您想要三个不同 columnx 值的 id 值。这是正确的吗?试试这个:

SELECT id, columnx
FROM table AS t1
JOIN (
    SELECT DISTINCT(columnx) AS columnx
    LIMIT 1
) AS t2 ON (t1.columnx = t2.columnx);

我也想知道你是否需要一些 ORDER BY 在那里的某个地方,但你的问题没有提到,所以我省略了它 - 基本上意味着你会得到三个半随机 columnx 价值观。

【讨论】:

  • 不,请参阅编辑,我想要 1 个不同 columnx 的所有结果,限制只是因为我不希望我的应用程序占用内存
  • @Mike,好的,答案更新了。你不应该在任何地方都需要任何 LIMIT 3 这个查询——LIMIT 1 应该完全符合你的要求。
  • 由于 C# 应用程序中的内存,我需要限制。
  • 它不喜欢你的 distinct(columnx) 说未知列
  • 嗯,是的,还是有问题,看看我的编辑,由于你给我的想法,我实际上解决了这个问题。
【解决方案2】:

说实话,我也不确定您要问什么,但听起来您想返回那些在 columnx 中有重复值的行的 id(将结果限制为 3)。

SELECT id, columnx
FROM tablename
GROUP BY columnx
HAVING ( COUNT(columnx) > 1 )
LIMIT 3

【讨论】:

    猜你喜欢
    • 2016-09-28
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2018-07-31
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多