mysql - 比较同一列中的两个值

标签 mysql database

我有一个名为 login 的表,其中包含字段 id 和 success(0 或 1)。

我只需要返回 1 成功条目多于 0 的 id(对于每个 id)。

到目前为止,我只能查询#success,另一个查询#hits,另一个比较#hits > #fail

/*returns: id, #hits */
SELECT id, count(*) AS hits  
FROM login u 
WHERE u.success = 1 
GROUP BY id;

/*returns: id, #fails*/
SELECT id, count(*)  AS fails
FROM login u 
WHERE u.success = 0 
GROUP BY id;

/*returns id, #hits, #fails, #hits > #fails? */
SELECT id, SUM(success = 1) AS 'Hits' , SUM(success = 0) AS 'Fails', SUM(success = 1) > SUM(success = 0) as 'hits > fails?'
FROM login u
GROUP BY id;

只有一个字段,我无法进行任何直接比较。

有什么方法可以比较查询 1 和查询 2 的值吗?

我可以将查询 3 更改为仅返回 SUM(success = 1) > SUM(success = 0) 吗?

提前谢谢您。

最佳答案

不确定,但你可以尝试这样的事情:

SELECT col
  FROM tbl
 GROUP BY col
 HAVING SUM(col1) > SUM(col2)

关于mysql - 比较同一列中的两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077826/

相关文章:

php - WAMP - PHP/MySQL - 为什么我的 POST 调用被破坏

database - 使用 liquibase 将 postgres 表复制到另一个模式

mysql - 地理数据存入数据库用于报告

php - 如何使用PHP和mysql制作搜索页面?

mysql - Slamdata:如何根据日期查找累计和

php - 保留 $_GET 值,除了两个指定的值

mysql - 导入的用户 ID 和主键?

mysql - 如何从 .NET 上的 varchar 获取下一个相关 ID?

sql - 在 Informix 中使用 sysmaster 用户连接时如何获取特定数据库的表列表?

mysql - 规范化该数据库的最佳方法是什么?