#sql #phpmyadmin
#sql #phpmyadmin
Вопрос:
У меня есть запрос, но я хочу, чтобы результаты запроса были обновлены в другой таблице, в 3-м, 4-м, 5-м и 6-м столбцах, потому что у меня уже есть значения в первом и втором столбцах.
мой запрос:
INSERT INTO customer_info (reader_ID,tag_no,area,max_timestamp)
SELECT aisle_info.reader_ID,tag_no,
aisle_info.area,
TIMESTAMPDIFF(SECOND,MIN(timestamp),MAX(timestamp)) AS MAXTIME
FROM tag_logs
INNER JOIN aisle_info ON
tag_logs.reader_ID = aisle_info.reader_ID
WHERE tag_no = 515988190124;
1364 — Поле ‘Имя_клиента’ не имеет значения по умолчанию
Комментарии:
1. Как вы сказали, это должен быть оператор update, а не insert в select..
2. не получается правильно ОБНОВИТЬ ЗНАЧЕНИЯ customer_info reader_ID, tag_no, area, max_timestamp (ВЫБЕРИТЕ aisle_info.reader_ID,tag_no, aisle_info.area, TIMESTAMPDIFF(SECOND, MIN(timestamp), MAX(timestamp)) КАК MAXTIME ИЗ ВНУТРЕННЕГО ОБЪЕДИНЕНИЯ tag_logs aisle_info В tag_logs.reader_ID = aisle_info.reader_ID ГДЕ tag_no = 515988190124); MySQL сказал: Документация # 1064 — У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования значений near ‘ (ВЫБЕРИТЕ aisle_info.reader_ID, tag_no, aisle_info.area, TIMESTAMPDIFF(SECO’ в строке 1
3. псевдокод, который я предложил, находится в TSQL .. вы можете выполнить поиск
Mysql update with join syntax
для устранения ошибки..4. вы пытаетесь вставить, но запрашиваете обновление. пожалуйста, напишите с некоторой ясностью
Ответ №1:
В TSQL — вы должны написать update
инструкцию вместо insert into select
, когда вы обновляете (добавляете) значения в существующую строку в таблице customer_info
. Псевдокод должен выглядеть следующим образом:
Update C
set C.reader_ID = A.reader_ID,
C.tag_no = A.tag_no,
C.area = A.area,
C.max_timestamp = TIMESTAMPDIFF(SECOND,MIN(T.timestamp),MAX(T.timestamp))
from customer_info C
join aisle_info A on A. tag_no = C. tag_no --Change here for correct join condition
join tag_logs T ON T.reader_ID = A.reader_ID
WHERE T.tag_no = 515988190124;