• 締切済み

in (サブクエリ) わかんない

table hh; +------+ | id | +------+ | 1 | | 2 | | 3 | | 2 | | 1 | | 1 | +------+ select id,count(*) as cou from hh group by id having count(*) in (1,2,3); こいつはOK select id,count(*) as cou from hh group by id having count(*) in (select count(*) from hh group by id); こいつはダメ 違いはなんですか、教えて下さい

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

> mysql Ver5.0.45, これはOK > mysql Ver8.0.12, これはダメ バージョンによってサポートする機能が変わるので、Ver8では何らかの制限が付いたのかもしれませんね。 私の環境はVer 5系でした。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

タイプミスじゃないでしょうか? 私の所では問題無く動作しました。(テーブル名は変えてますが) ===== mysql> SELECT * FROM test; +------+ | id | +------+ | 1 | | 2 | | 3 | | 2 | | 2 | | 1 | +------+ 6 rows in set (0.00 sec) mysql> SELECT id, COUNT(*) AS cou FROM test GROUP BY id HAVING COUNT(*) IN (1,2,3); +------+-----+ | id | cou | +------+-----+ | 1 | 2 | | 2 | 3 | | 3 | 1 | +------+-----+ 3 rows in set (0.00 sec) mysql> SELECT id, COUNT(*) AS cou FROM test GROUP BY id HAVING COUNT(*) IN (SELECT COUNT(*) FROM test GROUP BY id); +------+-----+ | id | cou | +------+-----+ | 1 | 2 | | 2 | 3 | | 3 | 1 | +------+-----+ 3 rows in set (0.01 sec)

amanojuku
質問者

お礼

mysqlで試してみたらいけるのとダメなのあります t_ohta様のサンプルをコピペしました(テーブル名は別) タイプミスでエラー出てくれたら分かりやすいけど Empty set って事は探してるんでしょ mysql Ver5.0.45, これはOK mysql Ver8.0.12, これはダメ 何か根本的なミスとかあるのかもしれません 分かんないけど勉強を先に進めます

amanojuku
質問者

補足

解答ありがとうございます、ごめんなさい 標準SQlと考え適当にカテ選択しました、環境は以下です mysql Ver 15.1 Distrib 10.1.36-MariaDB, for Win32 (AMD64) MariaDB [test]> select * from hh; +------+ | id | +------+ | 1 | | 2 | | 3 | | 2 | | 1 | | 1 | +------+ 6 rows in set (0.00 sec) MariaDB [test]> select count(*) from hh group by id; +----------+ | count(*) | +----------+ | 3 | | 2 | | 1 | +----------+ 3 rows in set (0.00 sec) MariaDB [test]> select id,count(*) cou from hh -> group by id -> having count(*) in -> (select count(*) from hh group by id); Empty set (0.02 sec) MariaDB [test]> select id,count(*) cou from hh -> group by id -> having count(*) in (1,2,3); +------+-----+ | id | cou | +------+-----+ | 1 | 3 | | 2 | 2 | | 3 | 1 | +------+-----+ 3 rows in set (0.00 sec)