Можете ли вы сделать запрос подсчета внутри другого запроса и использовать результаты? - PullRequest
0 голосов
/ 05 июня 2009

Могу ли я выполнить запрос:

Select id, (
    select count(*) from tableA as a where a.value < a.id
) 
from tableA as a where id < 5 

и получите результаты, которые я хотел. Если нет, то есть ли способ сделать то же самое без необходимости делать 2 запроса?

Ответы [ 4 ]

5 голосов
/ 05 июня 2009
SELECT id, COUNT(id) FROM tableA a WHERE id < 5 GROUP BY id HAVING a.value < a.id
1 голос
/ 05 июня 2009

1001 * попробовать *

Select a.id, mycount 
from tableA as a 
join  
(select a1.id, count(*)  as mycount from tableA as a1 where a.value < a.id) b 
   on a.id = b.id
where a.id < 5
0 голосов
/ 05 июня 2009

Не могли бы вы привести пример того, какого выхода вы пытаетесь достичь, и сообщить нам, какой тип сервера базы данных (ms, mysql, oracle?). Я думаю, что-то вроде ниже, но точный синтаксис может отличаться в зависимости от типа сервера:

SELECT  id, COUNT(CASE WHEN a.value < a.id THEN a.id ELSE NULL END) AS count
FROM    tableA AS a
GROUP BY id
0 голосов
/ 05 июня 2009

Вы можете, но, возможно, захотите исправить свои псевдонимы, потому что они могут работать не так, как у вас.

Кроме того, это будет намного медленнее, чем если бы вы могли сделать это как один оператор выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...