Форум: "Базы";
Текущий архив: 2017.10.01;
Скачать: [xml.tar.bz2];
Внизcount (таблица.*) Найти похожие ветки
← →
Цукор5 (2011-08-29 13:01) [0]Как-то подзабыл синтаксис. Как писать правильно?
Здесь все работает.select COUNT(*), IdName from Table1 group by IdName
А здесь не работает.select count(t1.*), t2.Name from Table1 t1, Table2 t2 where t1.IdName=t2.Id group by t2.name
← →
Цукор5 (2011-08-29 13:18) [1]Пардон, уже не надо.
Там оказывается нужно поставить вместо звезды любое поле и всё заработает.
Типа так:select count(t1.ID), t2.Name from Table1 t1, Table2 t2 where t1.IdName=t2.Id group by t2.name
← →
Sergey13 © (2011-08-29 13:27) [2]> [1] Цукор5 (29.08.11 13:18)
> Там оказывается нужно поставить вместо звезды любое поле и всё заработает.
Таки наверное не любое, а уникальное? Иначе, ИМХО, можно получить странное.
← →
Кщд (2011-08-29 13:52) [3]>Sergey13 © (29.08.11 13:27) [2]
>Таки наверное не любое, а уникальное?
почему?
← →
Sergey13 © (2011-08-29 14:04) [4]> [3] Кщд (29.08.11 13:52)
Сейчас проверил - вроде и на самом деле любое можно. Но почему то по привычке уже count(id) всегда ставлю на автомате в подобных случаях.
← →
Anatoly Podgoretsky © (2011-08-29 16:57) [5]
> Таки наверное не любое, а уникальное? Иначе, ИМХО, можно
> получить странное.
Так разницы не будет по сравнению со звездочкой
← →
Anatoly Podgoretsky © (2011-08-29 16:58) [6]
> Там оказывается нужно поставить вместо звезды любое поле
> и всё заработает.
Результаты могут быть совсем другие.
← →
Игорь Шевченко © (2011-08-29 22:52) [7]Вроде как поведение COUNT в стандарте чуть ли не с SQL-86 описано и все производители DBMS этого стандарта придерживаются
← →
Anatoly Podgoretsky © (2011-08-30 19:02) [8]> Игорь Шевченко (29.08.2011 22:52:07) [7]
Ну я многое видел в MySQL которое не то что не по стандарту, а резко
отличается даже от здравого смысла.
← →
Игорь Шевченко © (2011-08-30 19:56) [9]
> Ну я многое видел в MySQL которое не то что не по стандарту,
> а резко
> отличается даже от здравого смысла.
Еще были всякие Raima (Velocis), Gupta и прочие со своими изобретениями.
← →
Anatoly Podgoretsky © (2011-08-30 22:48) [10]> Игорь Шевченко (30.08.2011 19:56:09) [9]
Слава богу, что основные сервера как правило не отличаются от стандарта, в
основном добавлением своих функций, count у всех работает одинаково, по
стандарту.
← →
Vitalts (2011-09-05 15:34) [11]Count не учитывает NULL значения, посему, либо по полю, в котором наверняка не пустые значения, либо, что мне больше всего импонирует count(1)
← →
Vitalts (2011-09-05 15:41) [12]Count(1), кстати, работает быстрее, нежели count(*)
← →
Игорь Шевченко © (2011-09-05 16:54) [13]
> Count(1), кстати, работает быстрее, нежели count(*)
Почему ?
← →
Anatoly Podgoretsky © (2011-09-06 08:39) [14]> Игорь Шевченко (05.09.2011 16:54:13) [13]
А должно медленнее, ведь при этом подсчеты требуются дополнительные
действия, проверка на NULL
← →
Vitalts (2011-09-06 08:44) [15]count(1) (или другое статическое число) считает кол-во записей без проверок NULL значений, потому и быстрее.
[quote]
Таки наверное не любое, а уникальное? Иначе, ИМХО, можно получить странное.[/quote]
Вот это странное - и есть count() полю, содержадему NULL значения, он возвращает кол-во не нулевых значений этого поля, а не общее кол-во записей.
← →
Игорь Шевченко © (2011-09-06 12:26) [16]
> count(1) (или другое статическое число) считает кол-во
> записей без проверок NULL значений, потому и быстрее.
а в * что на NULL проверяется ?SQL> CREATE TABLE foo (
2 bar int
3 );
Table created.
SQL>
SQL> INSERT INTO foo VALUES (NULL);
1 row created.
SQL> INSERT INTO foo VALUES (NULL);
1 row created.
SQL> INSERT INTO foo VALUES(10);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SELECT COUNT(*) FROM foo;
COUNT(*)
----------
3
SQL> SELECT COUNT(1) FROM foo;
COUNT(1)
----------
3
SQL> SELECT COUNT(bar) FROM foo;
COUNT(BAR)
----------
1
← →
Anatoly Podgoretsky © (2011-09-06 12:29) [17]> Vitalts (06.09.2011 08:44:15) [15]
Противоречит большинству СУБД и стандарту. Если поле указано, а оно указано
в каноническом виде, то обязано проверять, или это какая то кривая СУБД
← →
Vitalts (2011-09-06 13:32) [18]Хм, по поводу count(*) был не прав, учитывает все записи без разбора, соответсвенно должно также быстро работать как и count(<статическое значение>)
← →
Anatoly Podgoretsky © (2011-09-06 13:45) [19]> Vitalts (06.09.2011 13:32:18) [18]
<статическое значение> это и есть указание поля, значит медленнее.
← →
Vitalts (2011-09-06 14:19) [20]Практика этого не подтверждает. Сравнение естественно есть, но поскольку значение статическое, то лишь единожды.
← →
Anatoly Podgoretsky © (2011-09-06 16:21) [21]> Vitalts (06.09.2011 14:19:20) [20]
Откуда? Должна подверждать. Не может быть со сравнением и без быть
одинаково, особенно на крупной таблице.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2017.10.01;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.001 c