だから私は次のようなクエリを持っています
SELECT * FROM `catalog` WHERE `id` IN ('2','2','3','3','3');
そして、これはID 2と3の2行のみを返します。5行(ID「2」の2行とID「3」の3行)を返すか、新しい列としてカウントを追加することは可能ですか?
だから私は次のようなクエリを持っています
SELECT * FROM `catalog` WHERE `id` IN ('2','2','3','3','3');
そして、これはID 2と3の2行のみを返します。5行(ID「2」の2行とID「3」の3行)を返すか、新しい列としてカウントを追加することは可能ですか?
なぜこのようなことをしたいかはわかりませんが、「in」句を使用する代わりに、内部クエリを使用できます。
select *
from `catalog` c,
(
select 2 ids
union all
select 2
union all
select 3
union all
select 3
union all
select 3
) k
where c.id = k.ids
次のようなことを試してください:
SELECT t.p,count(*) FROM
catalog,
(SELECT 2 as id
Union all select 2 as id
Union all select 3 as id
Union all select 3 as id
Union all select 3 as id)as t
where catalog.id = t.id
一時テーブルを使用して実行できます。
create temporary table arrayt (id int);
insert into arrayt values ('2'),('2'),('3'),('3'),('3');
select catalog.* from arrayt a LEFT JOIN catalog on (a.id=catalog.id);
カウントが必要な場合
select count(catalog.id) as count,catalog.id as id from arrayt a LEFT JOIN catalog on (a.id=catalog.id) group by catalog.id;