[解決済み] 同じ列に対して複数のWHERE条件を指定してのSELECTING
2023-06-09 13:53:56
質問
しかし、私は同じ列で複数の条件に一致するレコードのみを返すクエリを書く必要があります。
私のテーブルは、ユーザーにフラグを適用するための非常に単純なリンク設定です...
ID contactid flag flag_type
-----------------------------------
118 99 Volunteer 1
119 99 Uploaded 2
120 100 Via Import 3
121 100 Volunteer 1
122 100 Uploaded 2
など...この場合、連絡先99と100の両方が、"Volunteer"と"Uploaded"の両方としてフラグされていることがわかります...。
私ができるようにする必要があるのは、検索フォームを介して入力された複数の条件に一致するコンタクトIDのみを返すことです...コンタクトIDは選択したすべてのフラグに一致しなければなりません...私の頭の中では、SQLは次のようになります。
SELECT contactid
WHERE flag = 'Volunteer'
AND flag = 'Uploaded'...
でも...これは何も返しません... 何か間違ったことをしているのでしょうか?
どのように解決するのですか?
この場合
GROUP BY
と
HAVING COUNT(*) = _
:
SELECT contact_id
FROM your_table
WHERE flag IN ('Volunteer', 'Uploaded', ...)
GROUP BY contact_id
HAVING COUNT(*) = 2 -- // must match number in the WHERE flag IN (...) list
(仮に
contact_id, flag
が一意であると仮定して)。
または、joinを使用します。
SELECT T1.contact_id
FROM your_table T1
JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded'
-- // more joins if necessary
WHERE T1.flag = 'Volunteer'
もしフラグのリストが非常に長く、たくさんのマッチがある場合、おそらく最初の方が速いでしょう。フラグのリストが短く、マッチするものが少ない場合は、おそらく後者の方が速いでしょう。パフォーマンスが気になる場合は、両方のデータをテストして、どちらが最適か確認してください。
関連
-
mysqlのデータ圧縮性能比較 詳細
-
[解決済み】DynamoDB : 提供されたキー要素がスキーマと一致しません。
-
MySQLの起動エラー:ERROR 2003 (HY000)。localhost'上のMySQLサーバーに接続できない(10061)
-
[解決済み] INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの違いは何ですか?[重複しています]。
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
-
[解決済み] SQLの複数列の順序付け
-
[解決済み] DISTINCTでCOUNT(*)を選択する
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】MySQL:カラムがNULLの場合の行の選択
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLデータベース・インデックスの左端一致の原則
-
MySQLのLike演算子に関する詳細
-
MySQLインデックスベースストレステストの実装
-
MySql認証ベースのvsftpd仮想ユーザー
-
MySQL XAが分散型トランザクションを実装する方法を1記事にまとめました。
-
MySQLにおけるvarchar型とchar型の違い
-
Djangoマイグレーションエラー 外部キー制約を追加できない
-
msql クエリでのエラー 'where 節' の不明な列 'yellow fruit'
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?