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 的两种数据:
- 使用 a 表的 outer_id 关联 b 表的 id,如果存在则 type 不能为 99,如果不存在则保留该数据。
- 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
以上就是MySQL 关联表查询疑难解析:如何从 A 表和 B 表中获取特定条件的记录?的详细内容,更多请关注其它相关文章!