2014-10-09 4 views
0

В таблице, как показано ниже,автоматического приращения по данному конкретному столбцу

 
category | feeds | content 
========================== 
1   1  something 
1   2  bar 
1   3  foo 
2   1  blah 
2   2  um 
1   4  things 

Как я должен сделать, чтобы работать независимо друг от друга auto_increment (отличающегося «категории»)?

Заранее благодарен.

+0

что вы хотите описать в некоторых деталях. –

+0

@ K.D О, мне просто интересно, как я могу сделать такой запрос. (колонка «feeds» увеличивается отдельно) – Hoon

+0

Почему вы не нормализуете таблицы? Разделить на две таблицы (категория и фиды) – NMK

ответ

1

Когда дело доходит до оракула, у нас есть инструкция ROW_NUMBER() OVER PARTITION BY, но для Mysql все еще сложно реализовать этот. Как наиболее вероятно, мы будем использовать эту реализацию для ограничения данных по убыванию/по возрастанию по группам.

Здесь вы идете с подобной реализации для справки:

SELECT @row_number:=CASE WHEN @category=category 
THEN @row_number+1 ELSE 1 END AS feeds,@category:=category AS category, content 
FROM table1, (SELECT @row_number:=0,@category:='') AS t 
ORDER BY category; 

SQLFiddle Link

+0

О, это то, что я искал. Не могли бы вы дать мне больше советов? Я не понимаю значения знака @ и знака ': ='. – Hoon

+0

@ Hoon вы подразумеваете, что он автоматически увеличивается, вставляя или выбирая? Если, выбирая вышеуказанный запрос, кажется правильным, и я упоминаю триггер, который используется перед вставкой/при вставке. Что-то вроде этого http://sqlfiddle.com/#!2/ 7f4f5/1 –

+0

здесь @ row_number, @ category - это определяемая пользователем переменная (http://dev.mysql.com/doc/refman/5.0/en/user-variables.html). Я просто перезагружаю и поворачиваю row_number для каждая категория. – Logan

0

Попробуйте это:

alter table [tableName] add autoID int auto_increment primary key; 

Этот запрос будет добавить 1 новый столбец.

Результат

category | feeds | content | autoID 
===================================== 
1   1  something 1 
1   2  bar   2 
1   3  foo   3 
2   1  blah  4 
2   2  um   5 
1   4  things  6 
+0

Спасибо, что ответили. Но я боюсь, что это не то, что я ищу. Я пытался сделать поле «фиды» AUTO_INCREMENT. В любом случае, спасибо! – Hoon

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