【问题标题】:Count ocurrences between two tables and several variables in mysql [duplicate]计算mysql中两个表和几个变量之间的出现次数[重复]
【发布时间】:2020-12-15 11:27:24
【问题描述】:

我在处理这个查询时遇到了一些问题。

我有两张桌子:

表 1:

+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| ID         | varchar(255)| NO   | PRI | NULL    |       |
| Sex        | int(20)     | YES  |     | NULL    |       |
| Income     | varchar(255)| YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

表 2:

+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| ID        | varchar(255) | NO   | PRI | NULL    |       |
| var1      | varchar(255) | YES  |     | NULL    |       |
| var2      | varchar(255) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

我想要做的是,基于三个变量的条件,例如:

  • 性别 = 1
  • 收入 = 3(组)
  • var1 = "威斯康星州"

计算出现次数。即符合条件的人数。

我发现的主要问题是第二个表的行数不同,因为每个人的样本量不同,因此,ID 列中的每一行都有不同的名称两个表之间。

说清楚:

Table1
+------------+-------------+---------+
| ID         | Sex         | Income  |
+------------+-------------+---------+
| 5463D      | 1           | 2       |
| 1236Y      | 0           | 4       | 
| 7456H      | 0           | 3       | 
+------------+-------------+---------+

Table 2
+------------+-------------+---------+
| ID         | Var1        | Var2    |
+------------+-------------+---------+
| 5463D-567  | "Wisconsin" | var2_1  |
| 1236Y-856  | "Wisconsin" | var2_2  | 
| 7456H-569  | "Nevada"    | var2_3  | 
+------------+-------------+---------+

我认为解决方案可以通过对表 2 进行子查询,或者创建一个包含所需变量的临时表。但到目前为止我还没有找到这样做的方法。

任何帮助将不胜感激。

【问题讨论】:

标签: mysql sql


【解决方案1】:

我认为你可以使用:

select count(*)
from table1 t1
where t1.sex = 1 and t1.income = 3 and
      exists (select 1
              from table2 t2
              where t1.id = substring_index(t2.id, '-', 1) and
                    t2.var1 = 'Wisconsin'
             );

【讨论】:

    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多