Как обновить столбец в таблице из запроса выбора?

#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;