Как скопировать часть таблицы в конец этой же таблицы c autoincrement?

rubalex

Новичок
Как скопировать часть таблицы в конец этой же таблицы c autoincrement?

вот так в лоб не работает
INSERT INTO my_table SELECT FROM my_table WHERE my_table.field='....'
пишет Not unique table/alias: 'my_table'.

сделал через временную таблицу с другим именем. Но проблема в поле ID (autoincrement primary).

не добавляются. нарушается уникальность ID.

так как полей много у таблицы то все их пречислять муторно.
есть ли выход?
 

Макс

Старожил PHPClub
у таблицы нет конца и начала.
Таблица - это множество записей. А множества по определению неупорядочены
 

Falc

Новичок
>>вот так в лоб не работает
В последнем мускуле должно работать.

>>так как полей много у таблицы то все их пречислять муторно.
Перечислять придутся по любому, так что не ленись.
 

rubalex

Новичок
Автор оригинала: Maxim Matyukhin
у таблицы нет конца и начала.
Таблица - это множество записей. А множества по определению неупорядочены
ну что ты предираешся к словам...
мне нужно взять часть этих записей таблицы и записать в этуже талицу. не перечисляя все столбцы
 

rubalex

Новичок
Автор оригинала: Falc
>>вот так в лоб не работает
В последнем мускуле должно работать.

>>так как полей много у таблицы то все их пречислять муторно.
Перечислять придутся по любому, так что не ленись.
если бы не было поле ID -autoincrement то можно было бы не перечислять
 

Фанат

oncle terrible
Команда форума
во-первых, не должно, а во вторых, прочти ответ максима и сотри свой, поскольку он к проблеме не имеет никакого отношения.
 

Фанат

oncle terrible
Команда форума
rubalex
прочти то, что тебе написал Максим.
я понимаю, что тут надо думать, но ты уж постарайся.
и переформулируй задачу.

Безе данных - НЕ КОРОБКА СО СЧЕТНЫМИ ПАЛОЧКАМИ!
для того, чтобы записи переупорядочить, их НЕ НАДО ПЕРЕКЛАДЫВАТЬ С МЕСТА НА МЕСТО!!!
 

Falc

Новичок
rubalex
>>если бы не было поле ID -autoincrement то можно было бы не перечислять
Перечислять лучше всегда, иначе можно поимень очень прикольные баги при небольшом изменении струтуры таблицы.
 

chira

Новичок
rubalex
Код:
mysql> select * from items;
+--------+---------+
| iditem | title   |
+--------+---------+
|      1 | Селедка |
|      2 | Килька  |
|      3 | Сардина |
|      4 | Dog     |
|      5 | Hot dof |
+--------+---------+
5 rows in set (0.00 sec)

mysql> create temporary table ttt as select * from items where iditem between 2 and 4;
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> update ttt set iditem=null;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 3

mysql> insert into items select * from ttt;
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from items;
+--------+---------+
| iditem | title   |
+--------+---------+
|      1 | Селедка |
|      2 | Килька  |
|      3 | Сардина |
|      4 | Dog     |
|      5 | Hot dof |
|      6 | Килька  |
|      7 | Сардина |
|      8 | Dog     |
+--------+---------+
8 rows in set (0.00 sec)
mysql>
 

Falc

Новичок
chira
Это вместо того чтобы перечислить поля в одном запросе, делаем целых 3 :)

Вот лень до чего доводит :)
 

chira

Новичок
Falc
автор просил не перечислять все поля , ну я уж постарался ему угодить :)
а запросов у меня только на один больше ...
 

chira

Новичок
Falc
перечисление всех полей (кроме PK) и один SQL - это только для MySQL 4
ошибка приведенная автором:
ERROR 1066: Not unique table/alias: ....
из MySQL 3
 

Falc

Новичок
chira
>>MySQL 3
В 4.0.14 была такая же ошибка, так что может у человека просто стоит устаревшая "четверка"
 

Falc

Новичок
Falc
У меня была под линухом, но точно не помню версию вроде 4.0.14(возможно была 4.0.13), потом обновили на 4.0.15 и все заработало.
 

chira

Новичок
В мануале сказано , что ошибка исправлена в версии 4.0.14 ...
 

Апельсин

Оранжевое создание
Закглянуть в документацию и прочитать абзац, где чистым английским языком написано:

Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14.

религия не позволяет?
 

chira

Новичок
Апельсин
Не в духе , что ли ?
Уже кому нужно прочитали ...
 
Сверху