MySQL запрос из двух таблиц, взаимодействующих друг с другом - PullRequest
1 голос
/ 20 октября 2011

У меня есть таблицы Таблица1 user_id, date Таблица2 user_id, status

Мне нужно что-то вроде

UPDATE Table2 
   SET status = 2  
   WHERE user_id in ( {SELECT user_id FROM Table1 WHERE date > 0} )

Другими словами, мне нужночтобы увидеть, что дата в таблице table1 больше, чем 0000-00-00, тогда выберите user_id людей, которые соответствуют этим критериям, и используйте их в table2, чтобы установить их статус 2. Проблема в том, что мне нужно сделать это для более чем одного пользователя, поэтому запроситеВнутренний запрос у меня не работает, он работает только при наличии одной строки в результате.

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Я думаю, что написанное вами должно работать, но что с фигурными скобками? Просто удалите их, чтобы сделать это так:

UPDATE Table2 
   SET status = 2  
   WHERE user_id in (SELECT user_id FROM Table1 WHERE date > 0)

Согласно документации MySQL , IN должен работать с подзапросом.

Ключевое слово ANY, которое должно следовать за оператором сравнения, означает «вернуть TRUE, если сравнение равно TRUE для ЛЮБОГО значения в столбце, который возвращает подзапрос».

При использовании с подзапросом слово IN является псевдонимом для = ЛЮБОЙ.

0 голосов
/ 20 октября 2011

Используете ли вы PHP или другой язык для выполнения вызовов SQL?Если это так, может быть проще просто:

  • во-первых: выбрать идентификаторы пользователей из таблицы 1
  • во-вторых: пройти по каждой строке
  • в-третьих: выполнить обновление

С уважением, Марк

...