[解決済み] テーブルで複数のレコードを持つ行を選択する方法は?
2022-02-11 12:37:37
質問
"複数人で飲んだことのあるビールを選択してください"。基本的には、複数の人が飲んだビールのリストと、そのビールを飲んだ人の名前を表示するクエリ結果を取得しようとしています。group 節と having 節を使おうとしましたが、name 列と beer 列の両方から重複した値を取得することに興味があるため、group 節を使用できないことに気付きました。どうしたらいいでしょうか?
table bpb
sysnr beer name
---------- ---------------- ----------
1260 Guinness Draught Agneta
11226 Gigantic IPA Alan
11410 Alesmith Decaden Alan
11581 Trashy Blonde Alan
1260 Guinness Draught Alan
1403 Tuborg Alan
1416 Lowenbrau Alan
1506 Jever Alan
1515 Punk IPA Alan
1523 Armageddon IPA Alan
1540 Westmalle Double Alan
1548 Brooklyn Lager Alan
1553 Chang Beer Alan
1559 Coors Light Alan
1565 Bitburger Alan
1565 Bitburger Alan
1566 Pilsner Urquell Alan
1574 Pabst Blue Ribbo Alan
1585 San Miguel Alan
1594 Lapin Kulta Alan
1625 Sierra Nevada Pa Alan
1642 Fullers London P Alan
1649 Samuel Adams Bos Alan
1650 Orval Alan
1654 Duvel Alan
1657 Chimay vit Alan
1659 Leffe Blond Alan
1664 Kwak Alan
1670 DAB Alan
1670 DAB Alan
1675 Anchor Steam Bee Alan
89607 Lagunitas IPA Alan
89793 Maredsous Tripel Alan
11410 Alesmith Decaden Dick
1553 Chang Beer Dick
1642 Fullers London P Dick
1222 Sofiero Dina
1574 Pabst Blue Ribbo Dina
1650 Orval Dina
11451 Pripps Bla Fredrik
1403 Tuborg Fredrik
1559 Coors Light Fredrik
30611 Dugges High Five Fredrik
11489 Gambrinus Henrik
1353 Budvar Henrik
1544 Litovel Classic Henrik
1566 Pilsner Urquell Henrik
1611 Breznak Henrik
89301 Bernard Henrik
11410 Alesmith Decaden Janne
1260 Guinness Draught Janne
1506 Jever Janne
1559 Coors Light Janne
1559 Coors Light Janne
1649 Samuel Adams Bos Janne
11410 Alesmith Decaden Johan
1515 Punk IPA Johan
1548 Brooklyn Lager Johan
1559 Coors Light Johan
1670 DAB Johan
1403 Tuborg Jonas
1403 Tuborg Juha
1403 Tuborg Juha
1522 Karhu Juha
1523 Armageddon IPA Juha
1566 Pilsner Urquell Juha
1574 Pabst Blue Ribbo Juha
1594 Lapin Kulta Juha
30023 US Red Ale Juha
30658 Stigbergets Sais Juha
11433 Falcon Export Kalle
1519 Saxon Kalle
1522 Karhu Kalle
1551 Citra Pale Ale Kalle
1594 Lapin Kulta Kalle
1675 Anchor Steam Bee Kalle
30023 US Red Ale Kalle
11433 Falcon Export Kjell
1515 Punk IPA Kjell
1548 Brooklyn Lager Kjell
1559 Coors Light Kjell
11226 Gigantic IPA Lennart
11451 Pripps Bla Lennart
11489 Gambrinus Lennart
11581 Trashy Blonde Lennart
1344 Amstel Lennart
1403 Tuborg Lennart
1407 Backyard Brew Lennart
1523 Armageddon IPA Lennart
1540 Westmalle Double Lennart
1565 Bitburger Lennart
1566 Pilsner Urquell Lennart
1574 Pabst Blue Ribbo Lennart
1594 Lapin Kulta Lennart
1642 Fullers London P Lennart
1650 Orval Lennart
1659 Leffe Blond Lennart
1664 Kwak Lennart
1670 DAB Lennart
89793 Maredsous Tripel Lennart
1403 Tuborg Lisen
1407 Backyard Brew Lisen
1548 Brooklyn Lager Lisen
1553 Chang Beer Lisen
1565 Bitburger Lisen
1594 Lapin Kulta Lisen
1657 Chimay vit Lisen
30611 Dugges High Five Lisen
30658 Stigbergets Sais Lisen
11410 Alesmith Decaden Magnus
1260 Guinness Draught Magnus
1407 Backyard Brew Maria
11451 Pripps Bla Marie
11489 Gambrinus Rikard
1353 Budvar Rikard
1540 Westmalle Double Rikard
1544 Litovel Classic Rikard
1611 Breznak Rikard
1650 Orval Rikard
1654 Duvel Rikard
1657 Chimay vit Rikard
1659 Leffe Blond Rikard
1664 Kwak Rikard
1670 DAB Rikard
89793 Maredsous Tripel Rikard
11410 Alesmith Decaden Urban
1416 Lowenbrau Urban
1506 Jever Urban
1565 Bitburger Urban
1642 Fullers London P Urban
1670 DAB Urban
解決方法は?
HAVING句の中に条件が必要です。
select beer
from bpb
group by beer
having count(distinct name) > 1
COUNT()でDISTINCTキーワードを使用すると、異なる名前だけがカウントされます。
もし、名前も欲しいのであれば
select * from bpb
where beer in (
select beer
from bpb
group by beer
having count(distinct name) > 1
)
またはEXISTSを使用してください。
select b.* from bpb b
where exists (
select 1
from bpb
where beer = b.beer and name <> b.name
)
関連
-
[解決済み】SQL Server サブクエリが1つ以上の値を返しました。サブクエリが =, !=, <, <= , >, >= に続く場合、これは許可されません。
-
[解決済み] 同じテーブルのある列から別の列にデータをコピーするにはどうすればよいですか?
-
[解決済み] あるテーブルから、別のテーブルに存在しないすべてのレコードを選択するにはどうすればよいですか?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
-
[解決済み] SQLデータベースのテーブルでn番目の行を選択する方法は?
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?
-
[解決済み] SQL Server テーブルからランダムな n 行を選択する
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?
-
[解決済み] 文字数が多いもの、少ないものを選ぶ
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み】SQLクエリ「00904. 00000 - "%s: 無効な識別子"
-
[解決済み】一括読み込みデータ変換エラー(指定されたコードページに対して型の不一致または無効な文字)1行目4列目(年)について)
-
[解決済み] データ型 varchar の変換エラー
-
[解決済み] SQL Server - 'RETURN'付近の、条件が想定されるコンテキストで指定された、非ブール型の式。
-
[解決済み] エラー (ORA-00923: 期待された場所に FROM キーワードが見つかりませんでした)
-
[解決済み] varchar 値の変換で int カラムがオーバーフローしました。
-
[解決済み] アクセスクエリーエラー(from句のシンタックスエラー)
-
[解決済み] MySQLのON句の不明なカラム
-
[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。