2013-12-11 8 views
0

У меня есть две таблицы со значениями, а другая с пользователями.Обновить, где сравнивать даты из двух таблиц

Я хочу обновить Table_1.value до a, где мои Table_1.date < user_table.date для данного user_id.

Table_1 

|user_id | value | date  | 
|--------|-------|------------| 
| 1 | f | 2013-12-11 | 
|--------|-------|------------| 
| 2 | k | 2013-12-05 | 
|--------|-------|------------| 
| 3 | l | 2013-12-01 | 
|--------|-------|------------| 
| 4 | n | 2013-11-09 | 
|--------|-------|------------| 
| 4 | a | 2012-10-11 | 
|--------|-------|------------| 
| 2 | v | 2013-11-07 | 
|--------|-------|------------| 
| 1 | o | 2013-12-10 | 
|--------|-------|------------| 
| 3 | p | 2013-11-15 | 

user_table 

|user_id | date  | 
|--------|------------| 
| 1 | 2013-12-15 | 
|--------|------------| 
| 2 | 2013-11-03 | 
|--------|------------| 
| 3 | 2013-12-11 | 
|--------|------------| 
| 4 | 2013-12-09 | 

ответ

2

попробовать это:

update table1 inner join user_table 
       on (table1.user_id = user_table.user_id 
        and table1.date < user_table.date) 
    set table1.value = 'a' 

Если вы хотите добавить конкретного пользователя добавить where table1.user_id = 1 или любой идентификатор.

Посмотрите на скрипке: http://sqlfiddle.com/#!2/e0895/1

Редактировать

Поскольку изменения требований (более одной таблицы), то это будет:

UPDATE table_1 inner join table_3 
       on (table_1.date = table_3.date) 
     inner join user_table on 
     (table1.user_id = user_table.user_id 
      and table1.date < user_table.date) 
    set table_1.value = table_3.value 
+0

Спасибо за ваш ответ. Я попытался «УСТАНОВИТЬ» значение из таблицы «Таблица_3», а затем выбросил его. Колонка не найдена: 1054 Неизвестный столбец Table_1.user_id in on clause'. Я сделал 'UPDATE table_1, table_3 internal join user_table on (table1.user_id = user_table.user_id и table1.date Wistar

+0

Отредактировано мое ответ. посмотрите, подходит ли он. –

+0

Ваш ответ был прав, мне просто нужно было положить Table_3 после окончания внутреннего соединения. Thanks – Wistar

0
update Table_1,user_table 
set value='a' 
where Table_1.user_id = user_table.user_id 
    and Table_1.date < user_table.date 
Смежные вопросы