SQL-从JOIN查询中选择Discint并计数

Oliverbj

我有以下查询:

SELECT u.*
       (SELECT sum(trs.amount)
        FROM transactions trs
        WHERE u.id = trs.user AND trs.type = 'Recycle' AND
              trs.TIME >= UNIX_TIMESTAMP(CURDATE())
       ) as amt
    FROM (SELECT DISTINCT user_by
          FROM xeon_users_rented
         ) AS xur JOIN
         users u
         ON xur.user_by = u.username
         LIMIT 50

从我的数据库中选择一些数据。上面的查询工作正常。不过,我想选择count(*)xeon_users_rented哪里user_by = u.username这是我曾尝试:

 SELECT u.*
       (SELECT sum(trs.amount)
        FROM transactions trs
        WHERE u.id = trs.user AND trs.type = 'Recycle' AND
              trs.TIME >= UNIX_TIMESTAMP(CURDATE())
       ) as amt,
       (SELECT DISTINCT count(*)
          FROM xeon_users_rented
        WHERE xur.user_by = u.username
         ) AS ttl
    FROM (SELECT DISTINCT user_by
          FROM xeon_users_rented
         ) AS xur JOIN
         users u
         ON xur.user_by = u.username
         LIMIT 50

但是,这使我的总数xeon_users_rentedttl-而不是其中的不同行总数username = user_by

戈登·利诺夫(Gordon Linoff)

我认为您只需修改一下子查询就可以完成您想做的事情。也就是说,将更select distinct改为group by

SELECT u.*, xur.cnt,
       (SELECT sum(trs.amount)
        FROM transactions trs
        WHERE u.id = trs.user AND trs.type = 'Recycle' AND
              trs.TIME >= UNIX_TIMESTAMP(CURDATE())
       ) as amt
FROM (SELECT user_by, COUNT(*) as cnt
      FROM xeon_users_rented
      GROUP BY user_by
     ) xur JOIN    
     users u
     ON xur.user_by = u.username
LIMIT 50;

一些注意事项:

  • SELECT DISTINCT并不是真正必要的,因为您可以使用进行相同的逻辑GROUP BY因此,了解更为重要GROUP BY
  • 您正在使用LIMITno ORDER BY这意味着,每次运行查询时,您可以获得一组不同的行。不好的做法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL从内部联接中选择计数大于

来自分类Dev

在选择查询Sql Server中选择列

来自分类Dev

SQL Server:从多个表中选择查询

来自分类Dev

带计数的子选择,SQL查询

来自分类Dev

从子查询中选择SQL

来自分类Dev

SQL查询首先从索引中选择

来自分类Dev

SQL Server:JOIN子查询(从历史记录中选择数据)

来自分类Dev

如何在SQL计数中选择第n个实例?

来自分类Dev

SQL从多个表中选择并计数第三

来自分类Dev

在SQL中选择最大计数

来自分类Dev

如何从SQL中选择带有或条件和计数的内容?

来自分类Dev

SQL-从单独表的列值中选择记录计数

来自分类Dev

SQL从内部联接中选择计数大于

来自分类Dev

在选择查询Sql Server中选择列

来自分类Dev

优化sql“使用ismember从查询中选择”

来自分类Dev

使用JOIN从两个表中选择的SQL查询

来自分类Dev

如何在SQL的相应列中选择不同值的计数?

来自分类Dev

SQL选择带有计数的子查询

来自分类Dev

从SQL查询中选择数据范围

来自分类Dev

在SQL查询中选择重复日期

来自分类Dev

SQL计数(选择)查询

来自分类Dev

SQL从表中选择不同的计数和数据

来自分类Dev

左联接或选择中选择(SQL-查询速度)

来自分类Dev

从选定的SQL查询中选择

来自分类Dev

SQL查询-如何从表中选择计数所有值并显示所有计数及其ID?

来自分类Dev

在 SQL Server 中选择连续两天的客户计数

来自分类Dev

SQL 查询 - 选择计数(*)时返回 0

来自分类Dev

SQL 查询 INNER JOIN 或 LEFT JOIN 想要从 Wordpress 中的特定类别中选择帖子,但不要选择其他特定类别的帖子

来自分类Dev

sql查询从mysql中选择记录