【问题标题】:Distinct values and count in MySQLMySQL中的不同值和计数
【发布时间】:2015-04-10 08:06:16
【问题描述】:

我有一个表,其中包含已保存到 ORM 数据库中的消息。我有一个消息表和用户表,我使用它们来获取和保存值。

这是我的 sql 查询:

Select DISTINCT ch.user AS _id,
       con.name, 
       con.image, 
       con.color, 
       con.contact_id 
  from messages ch 
  inner join users con 
          on con.phone = ch.user 
  order by ch.timestamp ASC

消息表中还有一个布尔字段状态。我想获取所有具有status = false 的行的计数。

它可以集成到我上面准备好的查询中,以便我可以在一个查询中获得所有结果吗?还是我需要执行另一个来获取行数?

【问题讨论】:

  • MySQL 还是 sqlite?你在跑什么?
  • 向我们展示几行示例输出。听起来您想返回很多行,但您希望每一行都有行数,即...奇数。
  • 将上述结果扩展为另一列包含具有错误状态的行数且每行具有相同值的行会有什么意义?
  • @egrunin 很抱歉..由于我的组织政策,我无法打印示例行输出..但情况是我必须为每个状态 = 的唯一用户获取消息行数假的;

标签: android sql android-sqlite


【解决方案1】:

您可以使用子选择(检查this Fiddle):

Select DISTINCT ch.user AS _id,
       con.name, 
       con.contact_id,
       (SELECT COUNT(*) 
          FROM messages ch2 
         WHERE status = false AND ch.user = ch2.user) AS MY_COUNT
  from messages ch 
  inner join users con 
          on con.phone = ch.user 
  order by ch.timestamp ASC;

或者你从选择的结果中选择,在性能方面可能会更好。

【讨论】:

  • 我无法使用此查询获得任何结果..在“(”处出现错误
  • 我也在发布我的查询..你能检查一下我哪里错了。
  • Select DISTINCT ch.user AS _id,con.name,con.image,con.color,con.contact_id ( Select count(*) from chats ch inner join contacts con on ch.user=con .phone AND ch.status=1 AND ch.from_me=0 ) as row_count from chats ch inner join contacts con on con.phone=ch.user order by ch.timestamp ASC
  • 您使用的是 SQLite 而不是 MySQL?从标题中我认为您的目标是 MySQL。检查这个小提琴的 SQLite:sqlfiddle.com/#!7/ef214/3(可能只在 Chrome 中工作)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
  • 2016-05-09
  • 2018-11-15
  • 2014-03-25
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多