Я пытаюсь преобразовать некоторые данные из старых таблиц в новую структуру, где мне нужно преобразовать один идентификатор ключа в составной, и это доставляет мне некоторые проблемы:
Моя таблица (упрощенно):
CREATE TABLE `tmplt_spoergsmaal` (
`SpID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`lbnr` int(10) unsigned DEFAULT NULL,
`SpTekst` text,
`SpTitel` varchar(100) NOT NULL DEFAULT '',
`fk_Naeste_Sp` int(10) unsigned DEFAULT NULL,
`kontrol` tinyint(3) unsigned NOT NULL DEFAULT 0,
`kontrol_kilde` int(10) unsigned NOT NULL DEFAULT 0,
FOREIGN KEY (kontrol_kilde)
REFERENCES tmplt_spoergsmaal(SpID)
ON DELETE ignore
)
Пример данных:
Обратите внимание, что SPID является последовательным
+--------+--------+-----------+-----------+------------+-----------------+
| SpID | lbnr | SpTekst | SpTitel | kontrol | kontrol_kilde |
+--------+--------+-----------+-----------+------------+-----------------+
| 9000 | 100 | blablabla | title1 | 0 | null |
+--------+--------+-----------+-----------+------------+-----------------+
| 9001 | 101 | blablabla | title2 | 0 | null |
+--------+--------+-----------+-----------+------------+-----------------+
| 9002 | 102 | blablabla | title3 | 0 | null |
+--------+--------+-----------+-----------+------------+-----------------+
| 9003 | 103 | blablabla | title4 | 1 | 9000 |
+--------+--------+-----------+-----------+------------+-----------------+
| 9004 | 104 | blablabla | title5 | 1 | 9001 |
+--------+--------+-----------+-----------+------------+-----------------+
Я изменяю базу данных и использую lbnr
столбец вместо kontrol_kilde
столбца.Мой предварительный запрос таков:
SELECT spid, lbnr, kontrol, kontrol_kilde, (lbnr- (spid - kontrol_kilde)* kontrol)* kontrol AS k
FROM tmplt_spoergsmaal;
Это решает мою проблему, но однажды возникла проблема (из-за изменения вычитания (spid - kontrol_kilde
стало kontrol_kilde - spid
), которое сделало частьуравнение отрицательное. Поскольку столбец не подписан, это вызвало ошибку:
Error Code: 1690. BIGINT UNSIGNED value is out of range in
Мой вопрос:
Могу ли я "разыграть"столбцы в столбце псевдонимов k
, так что это int
вместо unsigned int
?