MySQL 关联表查询疑难解析:如何从 A 表和 B 表中获取特定条件的记录?

MySQL 关联表查询疑难解析:如何从 A 表和 B 表中获取特定条件的记录?

mysql 关联表查询疑难解析

问题:

如何使用 mysql 查询两个表 a 和 b,以提取符合特定条件的记录?

详细说明:

表 a 的结构如下:

a --------------------- | id | outer_id | ... | --------------------- | 1  | 1        | ... | | 2  | 1        | ... | | 3  | 2        | ... | | 4  | 4        | ... | | 5  | 6        | ... | | 6  | 10       | ... |

表 b 的结构如下:

b --------------------- | id | type | ... | --------------------- | 1  | 99   | ... | | 2  | 0    | ... | | 3  | 99   | ... | | 4  | 1    | ... | | 5  | 3    | ... | | 6  | 99   | ... |

需要查询出表 a 的两种数据:

  1. 使用 a 表的 outer_id 关联 b 表的 id,如果存在则 type 不能为 99,如果不存在则保留该数据。
  2. b 表存在且 type 等于 99。

解答:

查询 1:

select a.* from a a left join b b on b.id = a.outer_id where b.id is null    or (b.id is not null and b.type != 99)

查询 2:

SELECT a.* FROM A a INNER JOIN B b ON b.id = a.outer_id AND b.type = 99

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享