• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像に何が写っているかを示すテーブルを作ったのですが。。)

MySQLで特定のキーを含む画像のプライマリキーを取得する方法

このQ&Aのポイント
  • MySQLのバージョン3.23.58を使用しています。特定のキーを含む画像のプライマリキーを取得する方法について教えてください。
  • 画像に何が写っているかを示すテーブルを作成しましたが、特定のキーを持つ物を含んでいる画像のプライマリキーを取得したいです。
  • さらに、特定のキーを持つ物しか含んでいない画像のプライマリキーも取得したいです。どのようなクエリを実行すればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

「画像を管理する表」と「物を管理する表」が別にあり、画像と物をマッピングする表が、データ例が示された表ということですか? この表では、ユニークになるキーがないのでしょうか?この表に対し、どういう検索パターンがあるのか分かりませんが、特定の行を一意に定めようとする場合などで、不都合が生じるかも知れません。 >4と7のプライマリキーを持つ"物"を含んでいる画像のプライマリキー(上のテーブルだと3と5) を取得したい 【SQL例1】 select img from t1 where obj in(4,7) group by img having count(distinct obj)=2 ; >4と7のプライマリキーを持つ"物"しか含んでいない画像のプライマリキー(上のテーブルだと5) を取得したい MySQL 3.23の環境がないので実機確認できませんが、1SQLではできないと思います。 【SQL例2】 create temporary table wt1 (img int, obj int); insert into wt1 select * from t1 as y where obj not in(4,7) ; select x.img from t1 as x left join wt1 as y on x.img=y.img where y.img is null group by x.img ; drop temporary table wt1;

wnsml
質問者

お礼

できましたー!!!! nullを使って数えるのは全く思いつかなかったです。。 例2の方は、having count(*) = 2を付け足すことで正常に動作いたしました。(4 | 4のようなレコードが加わってしまうのを防ぐため。例1が参考になりました _ _) 本当にありがとうございました~。

関連するQ&A