mysql - MySQL独家记录

标签 mysql

我有很多 ClientID 和很多 pageid

例如。

客户端ID 1 页面ID 3
客户端ID 1 页面ID 1
客户端ID 2 页面ID 3
客户端ID 2 页面ID 2
客户端ID 3 页面ID 3

在查询中,我想仅显示仅包含 PageID 3 和 PageID 2 的记录。

因此,在我的结果中,我应该得到客户端 2 和 3,而客户端 1 应从结果中省略...执行此操作的最佳方法是什么?

答案:

SELECT clientID, clientName, pageID, profileTypeID, pageName
FROM  client
GROUP BY
  clientID
HAVING
  COUNT(*) = COUNT(IF(profileTypeID != 1, profileTypeID, NULL))

最佳答案

我阅读本文的方式是,您需要给定 ClientID 不与 2 或 3 之外的页面关联的任何行。

Select ...
From MyTable As T
Where T.PageID In(2,3)
    And Not Exists  (
                    Select 1
                    From MyTable As T2
                    Where T2.ClientID = T.ClientId
                        And T2.PageID Not In(2,3)
                    )

关于mysql - MySQL独家记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5794259/

相关文章:

PHP MySQLi 不允许我更改表(添加新列)

mysql - 关于具有多对多关系的 3 个表的 SQL 查询帮助

mysqli + ckeditor = 转义和破坏 html

php - 索引和变量错误

php - java查询链接错误

mysql - MySQL 中何时使用单引号、双引号和反引号

mySQL Query JOIN 在同一张表中

mysql - 为什么这个 MySQL 查询即使有索引也要花这么长时间来排序?

mysql - 将数据从本地计算机加载到表中到远程服务器

mysql - 从 2 个表中按日期排序