如何使用 MySQL 關聯(lián)表查詢,篩選出兩種不同關聯(lián)關系的數(shù)據(jù)?

如何使用 MySQL 關聯(lián)表查詢,篩選出兩種不同關聯(lián)關系的數(shù)據(jù)?

mysql 關聯(lián)表查詢——查詢兩種關聯(lián)數(shù)據(jù)

給定兩個表 a 和 b,a 表包含 outer_id 列,而 b 表包含 type 列。目標是查詢 a 表中的兩類數(shù)據(jù):

  1. 在 a 表中不存在于 b 表的 outer_id,或者存在于 b 表但 type 不等于 99。
  2. 存在于 b 表且 type 等于 99 的 a 表數(shù)據(jù)。

第一類數(shù)據(jù)

要查詢第一類數(shù)據(jù),可以使用如下語句:

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)

此語句使用左連接,它會將 a 表中的所有行都返回,即使在 b 表中沒有匹配的記錄。where 子句用于過濾掉不存在于 b 表中或 type 不等于 99 的行。

第二類數(shù)據(jù)

要查詢第二類數(shù)據(jù),可以使用如下語句:

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

此語句使用內(nèi)連接,它只會返回 a 表中存在于 b 表中且 type 等于 99 的行。where 子句用于指定這些條件。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享