Мне нужно проверить (из той же таблицы), есть ли связь между двумя событиями на основе даты и времени.
Один набор данных будет содержать дату и время окончания определенных событий, а другой набор данных будет содержать дату и время начала других событий.
Если первое событие завершится до второго события, я бы хотел связать их.
То, что я до сих пор это:
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?
mysql
select
sql-update
Джон М
источник
источник
Ответы:
Вы можете сделать это одним из двух способов:
Синтаксис соединения обновления MySQL:
Синтаксис ANSI SQL:
Выберите тот, который кажется вам наиболее естественным.
источник
You can't specify target table ___ for update in FROM clause SQL.sql
tableA
=tableB
. Вы вынуждены создать временную таблицу для хранения промежуточного результата. (должен был написать аналогичный запрос для скрипта миграции)Надеюсь, что это работает для вас.
источник
Легко в MySQL:
источник
Если кто-то пытается обновить данные из одной базы данных в другую, независимо от того, на какую таблицу он ориентируется, для этого должны быть определенные критерии.
Этот лучше и чище для всех уровней:
Traaa! Работает отлично!
С учетом вышеизложенного вы можете изменить установленные поля и критерии включения для выполнения своей работы. Вы также можете выполнить проверки, затем перетащить данные во временную таблицу (таблицы) и затем запустить обновление, используя приведенный выше синтаксис, заменяя имена таблиц и столбцов.
Надеюсь, что это работает, если нет, дайте мне знать. Я напишу точный запрос для вас.
источник
Надеюсь, что это поможет вам в случае, когда вы должны сопоставить и обновить между двумя таблицами.
источник
Я нашел этот вопрос в поиске собственного решения очень сложного соединения. Это альтернативное решение более сложной версии проблемы, которая, на мой взгляд, может оказаться полезной.
Мне нужно было заполнить поле product_id в таблице действий, где действия пронумерованы в единице, а единицы пронумерованы на уровне (идентифицируемом с помощью строки ?? N), чтобы можно было идентифицировать операции с использованием SKU, то есть L1U1A1. Эти SKU затем хранятся в другой таблице.
Я определил следующее, чтобы получить список action_id и product_id: -
Я обнаружил, что это слишком сложно для включения в SELECT в mysql, поэтому я создал временную таблицу и соединил ее с оператором обновления:
Я надеюсь, что кто-то найдет это полезным
источник
источник
Вы можете обновить значения из другой таблицы, используя внутреннее соединение, как это
Следуйте здесь, чтобы узнать, как использовать этот запрос http://www.voidtricks.com/mysql-inner-join-update/
или вы можете использовать select как подзапрос, чтобы сделать это
запрос подробно объясняется здесь http://www.voidtricks.com/mysql-update-from-select/
источник
Ты можешь использовать:
источник
Для той же таблицы,
источник
У меня была проблема с повторяющимися записями в одной таблице. Ниже подходы работали для меня. Это также было поддержано @sibaz.
Наконец я решил это, используя следующие запросы:
Запрос на выборку сохраняется во временной таблице
Временная таблица объединяется в запросе на обновление.
Я не очень разбираюсь в SQL, пожалуйста, посоветуйте любой лучший подход, который вы знаете.
Выше запросы для сервера MySql.
источник