1. ホーム
  2. mysql

[解決済み] MySQL Join Where Not Exists

2023-04-01 03:56:45

質問

私は2つのテーブルを結合するMySQLクエリを持っています。

  • 投票者数
  • 世帯数

彼らは voters.household_idhousehold.id .

次に必要なことは、投票者テーブルがeliminationという3番目のテーブルに結合されるように修正することです。 voter.idelimination.voter_id . しかし、私は投票者テーブルのレコードが消去テーブルに対応するレコードを持っているものを除外したいのです。

これを行うには、どのようにクエリを作成すればよいのでしょうか。

これは私の現在のクエリです。

SELECT `voter`.`ID`, `voter`.`Last_Name`, `voter`.`First_Name`,
       `voter`.`Middle_Name`, `voter`.`Age`, `voter`.`Sex`,
       `voter`.`Party`, `voter`.`Demo`, `voter`.`PV`,
       `household`.`Address`, `household`.`City`, `household`.`Zip`
FROM (`voter`)
JOIN `household` ON `voter`.`House_ID`=`household`.`id`
WHERE `CT` = '5'
AND `Precnum` = 'CTY3'
AND  `Last_Name`  LIKE '%Cumbee%'
AND  `First_Name`  LIKE '%John%'
ORDER BY `Last_Name` ASC
LIMIT 30 

どのように解決するのですか?

私なら LEFT JOIN をチェックすることで、マッチしない行だけを選択することができます。 NULL s.

のようなものですね。

SELECT V.*
FROM voter V LEFT JOIN elimination E ON V.id = E.voter_id
WHERE E.voter_id IS NULL

サブクエリを使うより効率的かどうかは、最適化、インデックス、投票者ごとに複数の消去が可能かどうか、などによります。