【问题标题】:Counting distinct user id's from multiple tables从多个表中计算不同的用户 ID
【发布时间】:2013-07-19 10:05:23
【问题描述】:

我有大约 5 个具有公共字段“userid”的表我想计算所有这些表中不同的用户 ID。某些用户 ID 可能出现在其中大约 2 个表中。但我想一起计算 5 个表中不同用户 ID 的 UNION。我可以使用 ff 代码在一个表中计算不同的用户 ID。我希望能够从所有表中计数。

//just count the nuber of distict userids in table1
    $query2 = ("SELECT COUNT(DISTINCT userid) FROM table1"); 
    $result2 = mysql_query($query2) or die(mysql_error()); 
    $row2 = mysql_fetch_row($result2); 
    echo "Number of users in table 1  = ".$row2[0] ."<br />";


**Table 1**
Id    userid    name   adresss

**Table 2**
Id  Title   Sex   userid

**Table 3**
Id   userid   amount

**Table 4**
Id  price  promotion  userid   productid

**Table  5**
Id  userid   category   tax   weight

【问题讨论】:

  • 这看起来像一个标准的表格设置......为什么你需要计算所有这些表格?有人会假设您有一张在某处生成唯一userIds 的表,您可以从中获取计数(可能是Table 1)。

标签: php mysql sql database


【解决方案1】:

使用UNION

UNION ALL 相比,标准UNION 将从结果集中删除重复值。你的陈述看起来像

SELECT   COUNT(*)
FROM     (
           SELECT UserID FROM Table1
           UNION SELECT UserID FROM Table2
           UNION SELECT UserID FROM Table3
           UNION SELECT UserID FROM Table4
           UNION SELECT UserID FROM Table5
         ) AS UserIDs

From w3schools

默认情况下,UNION 运算符仅选择不同的值。允许 重复值,使用 UNION ALL。

【讨论】:

  • 请帮我看看这个棘手的问题stackoverflow.com/questions/11503321/…
  • @astymore - 我刚刚做了,如果这不是您的想法,请告诉我们。
  • 谢谢大佬,效果很好。只有语法错误(空格 btn COUNT 和括号)但效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 2022-01-22
  • 2019-07-28
  • 2021-07-03
  • 1970-01-01
相关资源
最近更新 更多