MySQL 选择相关表中有多个匹配记录的记录

标签 mysql

我有 2 张 table :

pages 表包含字段 id

pages2categories 表包含字段 pagecategory

我想从页面表中选择记录

where (there is a record in the pages2categories table 
WHERE pages2categories::page = pages::id AND pages2categories:: category = 'X') 
AND (there is also a record in the pages2categories table WHERE pages2categories::page = pages::id AND pages2categories:: category = 'Y') 
AND (there is also a record in the pages2categories table WHERE pages2categories::page = pages::id AND pages2categories:: category = 'Z')

换句话说,仅当所有三个匹配记录都存在于pages2categories 表中时,才从pages 表返回记录。

示例:

页面::id

1

2

3

pages2categories::页面、pages2categories::category

1, x

1, y

2, x

2, y

2, z

3, x

结果应该只返回页面表中的记录 2。

我希望这一点很清楚。谢谢!

最佳答案

您还可以使用这个:

SELECT * FROM TABLE1 A
WHERE EXISTS (SELECT * FROm TABLE2 B WHERE A.ID = B.ID AND B.category = 'X') 
AND EXISTS (SELECT * FROm TABLE2 B WHERE A.ID = B.ID AND B.category = 'Y')
AND EXISTS (SELECT * FROm TABLE2 B WHERE A.ID = B.ID AND B.category = 'Z')

关于MySQL 选择相关表中有多个匹配记录的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11586694/

相关文章:

mysql - 不使用限制和子查询无法从 emp 表中找到第二高的薪水

mysql - SQL查询以通过连接获取与最大值对应的行

java - 插入sql默认值错误

mysql - Django 对象获取小数匹配

php - 用php处理来自mysql的许多成员数据

centos - 使用 mysqldump 和 rsync 进行备份

mysql - 插入 SQL 数据库?

mysql - 左外连接?行编号问题

mysql - 拒绝用户 MySql 的访问

mysql - 我的 mysql 函数有一个错误