【问题标题】:Selecting 2 distinct fields but also return the rest of the columns选择 2 个不同的字段,但也返回其余列
【发布时间】:2013-06-12 19:39:58
【问题描述】:

我想明确地选择表格的两个字段。

我这样做是使用:

SELECT DISTINCT `from`, `to` FROM `messages` WHERE `from`='9129771472' // the condition is just an example, any number could be there

但问题在于,只有fromto 被选中。我需要使用更多列。

我确信有一个快速解决这个问题的方法。我看过其他关于此的帖子,但到目前为止没有任何帮助。

【问题讨论】:

  • 将此加入到SELECT 以获取表格的其余部分。
  • 如果不止一行共享一个不同的from, to 值,那么任何DISTINCT 逻辑都将要求您仅选择其中一行并忽略其他行。当发生这种情况时,您对选择哪一行行有任何要求吗?
  • @EdGibbs 这就是重点。如果有不同的from, to,那么它应该只选择其中之一。
  • 正确,但这意味着一个或多个其他行不会被选中。下面@dianuj 的答案将满足您的要求,但包含哪些行以及哪些行被忽略或多或少是随机的。如果您对此感到满意,那么您应该一切就绪。如果您有其他标准,请告诉我们。祝你好运!

标签: php mysql mysqli distinct


【解决方案1】:

不使用GROUP BY的原因是什么

SELECT * FROM `messages` WHERE `from`='9129771472' GROUP BY `from`

    SELECT * FROM `messages` WHERE `from`='9129771472' GROUP BY `from`,`to`

【讨论】:

  • 因为这并没有让我区分字段。它不像我想要的那样工作。 (:
  • 这就是你现在应该如何使用GROUP BY
  • @dianuj 我的表中有一个timestamp 列,我想在group by 之前添加order by timestamp DESC。我试过了:SELECT * FROM messages WHERE from='9129771472' OR to='9129771472' ORDER BY timestamp DESC GROUP BY id 但这似乎会引发错误。而且我确实在正确的地方有 `,但我只需要删除它们才能发表评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
相关资源
最近更新 更多