【问题标题】:HAVING COUNT receiving other COUNT valueHAVING COUNT 接收其他 COUNT 值
【发布时间】:2016-11-26 15:45:12
【问题描述】:

我正在使用两个不同表中的选择,这些表应按组引用 ID 匹配,例如: 表一和表二

+-----+-----+------------+   +-----+------+
| gid | tid | created    |   | gid | nid  |
+-----+-----+------------+   +-----+------+
|   0 | 816 | 1480002041 |   |   0 | 1123 |
|   1 | 731 | 1480003932 |   |   0 | 1124 |
|   1 | 736 | 1480003932 |   |   1 | 1125 |
|   2 | 746 | 1480003932 |   |   1 | 1126 |
+-----+-----+------------+   |   1 | 1123 |
                             |   2 | 1124 |
                             |   1 | 1129 |
                             +-----+------+

我需要从 table 2 中获取与 table 1 上的组完全匹配的nid 值。 表 1 中对搜索的引用是 tid。 我相信 SQL 会是这样的:

SELECT  t1.nid
FROM table1 t1
INNER JOIN
(
    SELECT  gid 
    FROM    table2 
    WHERE   tid IN (731, 736, 746, 751)
    GROUP   BY gid
    HAVING  COUNT(DISTINCT tid) = 4
) t2 ON t1.gid = t2.gid;

但是我怎样才能得到确切的count 来替换硬编码的number 4

【问题讨论】:

    标签: mysql join count group-by having


    【解决方案1】:
    SELECT t2.nid
      FROM table1 t1
    INNER JOIN
      table2 t2
      ON t1.gid = t2.gid;
    WHERE t2.tid IN (731, 736, 746, 751)
      GROUP BY t2.gid
    

    【讨论】:

    • 感谢 Roman Che,但没有按预期工作。当tid 值与第二张表上的gid 计数不匹配时,结果不应返回任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2012-11-12
    • 2020-12-29
    • 2012-10-23
    • 1970-01-01
    • 2016-07-23
    • 2021-01-28
    相关资源
    最近更新 更多