php - 用户数据库 - 有效和无效请求

标签 php mysql database

这就是我得到的:

用户

  • 用户名(文本)
  • 状态(数字)

请求

  • 用户名(文本,与用户表中的相同)
  • 符合条件(0 或 1)
  • 有效(0 或 1)

我想SELECT所有符合条件(eligible = 1)和有效(valid = 1)请求的数量大于所有符合条件(eligible = 1)和无效(valid = 0) 请求并且用户发出的所有符合条件的请求的数量大于 10。

什么 SQL 查询是实现该目标的最佳和最快的?


这就是我现在所在的位置 - 它向我显示了有效的和所有的请求,但它绝对不应该是那样的 - 太多的 SELECTS 并且它的查询速度非常慢......

SELECT U.username, 
(SELECT COUNT(R.username) FROM requests AS R
  WHERE U.username = R.username AND eligible = 1 AND valid = 1) AS ValidRequests,
(SELECT COUNT(R.username) FROM requests AS R
 WHERE U.username = R.username AND eligible = 1) AS AllRequests
FROM users AS U;

最佳答案

您可以使用 group byhaving 子句来表达逻辑。在这种情况下,您可以通过进行算术运算来模拟 bool 逻辑。因此,仅当请求符合条件且有效时,eligible*valid 才为 1

剩下的只是将您的条件转换为适当的逻辑:

select username
from requests
group by username
having sum(eligible) > 10 and
       sum(eligible*valid) > sum(eligible*(1-valid));

关于php - 用户数据库 - 有效和无效请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969567/

相关文章:

javascript - 关于connection.end()在node.js mySQL模块中如何工作的困惑

Mysql性能调优

c# - 带有绑定(bind)变量的 OleDbCommand

php - 将 utf-8 转换为 iso-8859-2(抛光)

PHP - 使用内置函数编写自己的函数 VS

php - 尝试连接两个 mysql 表中的数据以便按其排序

mysql - 执行用户迁移时出错

javascript - 用于处理服务器端事件的 PHP 服务器导致 Apache 连接过多

php - 在 wamp 服务器中启用 shell_exec()

php - MySQL 查询在 SQL pro 中工作正常,但在 mysqli_query 中工作不正常