こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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);

こいつはダメ

違いはなんですか、教えて下さい

投稿日時 - 2018-10-27 13:54:57

QNo.9551686

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> mysql Ver5.0.45, これはOK
> mysql Ver8.0.12, これはダメ

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

投稿日時 - 2018-10-29 11:31:05

ANo.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)

投稿日時 - 2018-10-27 14:46:43

補足

解答ありがとうございます、ごめんなさい
標準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)

投稿日時 - 2018-10-27 15:54:22

お礼

mysqlで試してみたらいけるのとダメなのあります
t_ohta様のサンプルをコピペしました(テーブル名は別)
タイプミスでエラー出てくれたら分かりやすいけど
Empty set って事は探してるんでしょ

mysql Ver5.0.45, これはOK
mysql Ver8.0.12, これはダメ

何か根本的なミスとかあるのかもしれません
分かんないけど勉強を先に進めます

投稿日時 - 2018-10-28 20:49:18

あなたにオススメの質問