2015-11-30 3 views
0

У меня есть таблица вроде этого:Выбрать из таблицы на основе подсчета

id | name | type 
----------------- 
0 | firs | 2 
1 | secs | 3 
2 | this | 9 
1 | thus | 3 

Я знаю, что идентификатор (это не уникальный идентификатор) и тип, и я хочу, чтобы выбрать записи, только если там указано количество записей с этим id и тип.
Для одной записи я пытался, например, это:

select * from myTable 
where 
(select count(*) from myTable where myTable.id = 0 and myTable.type = 2) = 1; 

Это возвращает мне все строки, а не только один ряд я хочу. Может кто-нибудь, пожалуйста, скажите мне, как правильно получить правильный результат?

ответ

0

Ваше выражение выглядит как WHERE 1 = 1, и оно всегда верно, поэтому SELECT получает каждый столбец из вашей таблицы. Если вы хотите выбрать, например, данных, где идентификатор = 1 и тип = 3 и число вхождений = 2 вы можете сделать что-то подобное:

select * from myTable 
where 
(select count(*) from myTable where myTable.id = 1 and myTable.type = 3) = 2 and myTable.id = 1 and myTable.type = 3; 
+0

Вы правы. Я забыл, что это внутренний выбор, поэтому мне нужно добавить условия столбцов и к внешнему. Благодарю. – Artholl

Смежные вопросы