Дополнительно
MySQL - Запрос UPDATE на основе запроса SELECT
Мне нужно проверить (из той же таблицы), есть ли связь между двумя событиями на основе даты-времени.
Один набор данных будет содержать время окончания определенных событий, а другой набор данных будет содержать время начала других событий.
Если первое событие завершается раньше второго, то я хотел бы связать их.
На данный момент у меня есть следующие данные:
SELECT name as name_A, date-time as end_DTS, id as id_A
FROM tableA WHERE criteria = 1
SELECT name as name_B, date-time as start_DTS, id as id_B
FROM tableA WHERE criteria = 2
Затем я присоединяюсь к ним:
SELECT name_A, name_B, id_A, id_B,
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B
Могу ли я затем, основываясь на поле validation_check, выполнить запрос UPDATE с вложенным SELECT?
461
12
На самом деле это можно сделать одним из двух способов:
Синтаксис MySQL update join:
Синтаксис ANSI SQL:
Выберите тот, который кажется вам наиболее естественным.
Надеюсь, это сработает для вас.
Просто в MySQL:
Если кто-то стремится обновить данные из одной базы данных в другую, независимо от того, на какую таблицу он нацелен, должны существовать какие-то критерии для этого.
Этот критерий лучше и чище для всех уровней:
Трааа! Работает отлично!
Понимая вышеизложенное, вы можете изменить критерии set fields и "on" для выполнения своей работы. Вы также можете выполнить проверку, затем вытащить данные во временную таблицу (таблицы), а затем запустить обновление, используя приведенный выше синтаксис, заменив имена таблиц и столбцов.
Надеюсь, это сработает, если нет, дайте мне знать. Я напишу для вас точный запрос.
Надеюсь, что это поможет вам в случае, где вы должны соответствовать и обновление между двумя таблицами.
Я нашел этот вопрос искать себя решение очень сложного соединения. Это альтернативное решение, более сложный вариант задачи, который я думал, может быть полезным.
Мне нужно заполнить поле product_id в таблице деятельности, где деятельность нумеруются в единицы, а единицы нумеруются в уровень (определен с помощью строки ??N), такой, что один может определить виды деятельности, используя сеи L1U1A1 тоесть. Те артикулы, которые затем сохраняются в другую таблицу.
Я определил следующее, Чтобы получить список activity_id против product_id:-
Я обнаружил, что это было слишком сложным, чтобы включить в Выбрать в MySQL, так что я создал временную таблицу, и присоединился, что с обновлением заявление:-
Я надеюсь, что кто-то находит это полезным
Вы можете обновить значения из другой таблицы, используя внутреннее соединение такой
Следуйте сюда, чтобы знать, как использовать этот запрос http://www.voidtricks.com/mysql-inner-join-update/
или вы можете выбрать использовать как подзапрос для этого
запрос подробно здесь http://www.voidtricks.com/mysql-update-from-select/
Вы можете использовать:
За одним столом,
У меня была проблема с дублирующимися записями в себя одну таблицу. Ниже подходов работая на меня. Он также высказалось @сибаз.
Наконец я решил использовать ниже запроса:
Если аргумент object_id(Н'базы данных tempdb..#New_format_donor_temp', Н'у') не является нулем Падение таблица № New_format_donor_temp;
выберите * в #New_format_donor_temp из DONOR_EMPLOYMENTS где DONOR_ID в ( 1, 2 )
Обновление де Набор STATUS_CD=de_new.STATUS_CD, STATUS_REASON_CD=de_new.STATUS_REASON_CD, TYPE_CD=de_new.TYPE_CD Из DONOR_EMPLOYMENTS как де Внутреннее соединение #New_format_donor_temp как de_new на de_new.EMP_NO = де.EMP_NO Где де.DONOR_ID В ( 3, 4 )
Я не очень опытный с SQL посоветуйте, пожалуйста, какой лучше знаешь.
Выше запросы к серверу MySQL.
Проверить С ниже запроса.
таблицы tablea обновить внутреннее соединение таблицы tableb B на А. name_a = Б. name_b набор validation_check = если(start_dts > end_dts, 'действительный', '')