php - 内连接包含 3 个表的计数

标签 php jquery mysql sql-server

我们有3张 table

  1. membersurlss,包含 ID、用户名等字段
  2. 具有 ID、用户名等字段的用户
  3. matrix1 包含字段 ID、用户名 ....

现在我们希望在查询中进行 2 项检查。

  1. 所有 3 个表的“用户名”字段值必须匹配。
  2. 仅随机选取membersurls 表中超过1 个条目的记录。

这是我们尝试过的查询,但没有找到正确的查询,这意味着它总是选取 1 条记录,但不会选取任何其他随机记录。

select membersurlss.Username, COUNT(membersurlss.ID) 
from membersurlss 
INNER JOIN users ON membersurlss.Username=users.Username 
INNER JOIN matrix1 ON matrix1.Username=users.Username 
having COUNT(membersurlss.ID)>1 
order by rand() limit 0,1

我们想选取一条随机记录。

最佳答案

您的查询将计算所有用户的 ID。为了计算每个用户的 ID,您需要使用 GROUP BYmembersurlss.Username

select membersurlss.Username, COUNT(membersurlss.ID) 
from membersurlss 
INNER JOIN users ON membersurlss.Username=users.Username 
INNER JOIN matrix1 ON matrix1.Username=users.Username
GROUP BY membersurlss.Username
having COUNT(membersurlss.ID)>1 
order by rand() limit 0,1

如果usersmatrix1 表中的Username 是唯一的,那么这应该有效。

如果 membersurlss.ID 是唯一的(或主键),您应该使用 DISTINCT 以便仅计算 membersurlss 表中的出现次数:

select membersurlss.Username, COUNT(DISTINCT membersurlss.ID) 
from membersurlss 
INNER JOIN users ON membersurlss.Username=users.Username 
INNER JOIN matrix1 ON matrix1.Username=users.Username
GROUP BY membersurlss.Username
having COUNT(DISTINCT membersurlss.ID)>1 
order by rand() limit 0,1

关于php - 内连接包含 3 个表的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36513946/

相关文章:

mysql - 合并具有相同列的 2 个表

mysql - 从 mysql 表中选择具有条件的重复值

php - 根据 JSON 数据创建包含左侧和顶部标题的表格

php - PHP自定义错误处理程序日志输出

javascript - "selectbox"表格点击行后的下拉列表

javascript - 引用具有多个变量的 HTML ID

具有内容分组的 PHP 动态表

jquery - jQuery 中包含指数吗?

javascript - 检查一个 div 是否被禁用 jQuery

MySQL:连接语句:为什么这不起作用?