1 ответ
zx аватар
На сайте с
04.05.2010 Сообщений:
8

[update syntax]
{
имеем таблицу:
CREATE TABLE `categories` (
`id` INTEGER(11) NOT NULL,
`name` VARCHAR(50) COLLATE utf8_general_ci NOT NULL DEFAULT '',
`caption` VARCHAR(50) COLLATE utf8_general_ci NOT NULL DEFAULT '',
`imgfile` VARCHAR(50) COLLATE utf8_general_ci NOT NULL DEFAULT '',
`sortir` INTEGER(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)

пытаемся выполнить апдейт со скобками по рецепту котерова
UPDATE categories SET (name = 'вася') WHERE id = 4
Хрен нам:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(name = 'вася') WHERE id = 4' at line 1

а если по-нормальному попросить
UPDATE categories SET name = 'вася' WHERE id = 4
то запросто
Query OK, 0 rows affected (0 ms)
}

[group by issue]
{
Сенсация!

в той же таблице мускулом делаем

SELECT name, caption, sum(sortir)
FROM categories
group by name, caption

- РАБОТАЕТ!!!

отмечу, что МЗ в таком случае говорит нечто типа:

Msg 8120, Level 16, State 1, Line 1
Column 'categories.name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Читаем доку по мускулу, видим:
MySQL extends the use of GROUP BY to permit selecting fields that are not mentioned in the GROUP BY clause. If you are not getting the results that you expect from your query, please read the description of GROUP BY found in Section 11.16, “Functions and Modifiers for Use with GROUP BY Clauses”.

Таким образом, мускул (хвала ему) как обычно расширил синтаксис ансишного груп бая. Ждать такого поведения от другой субеды, однако, не следует - не сделает она такой выборки.
}

admin аватар
На сайте с
10.10.2008 Сообщений:
57
Спасибо, Антон , просвятил

Спасибо, Антон , просвятил :)
Так что счет 1:1 :-)