MySQL 關(guān)聯(lián)表查詢疑難解析:如何從 A 表和 B 表中獲取特定條件的記錄?

MySQL 關(guān)聯(lián)表查詢疑難解析:如何從 A 表和 B 表中獲取特定條件的記錄?

mysql 關(guān)聯(lián)表查詢疑難解析

問題:

如何使用 mysql 查詢兩個(gè)表 a 和 b,以提取符合特定條件的記錄?

詳細(xì)說明:

表 a 的結(jié)構(gòu)如下:

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

表 b 的結(jié)構(gòu)如下:

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

需要查詢出表 a 的兩種數(shù)據(jù):

  1. 使用 a 表的 outer_id 關(guān)聯(lián) b 表的 id,如果存在則 type 不能為 99,如果不存在則保留該數(shù)據(jù)。
  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

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊6 分享