2015-03-17 4 views
2

У меня 40 000 строк в моей базе данных, которые мне нужно обновить. Однако мой запрос выбора, который я использовал, находится в двух таблицах.SQL Update Query

Пример моего запроса на выборку ниже:

select t1.*, t2.data, t2.more_data, t2.more_data2 
from table1 as t1, table2 as t2 
where 
DATE(t1.date) >= '2014-10-23' 
and 
t1.direction = 10 
and 
t1.date_read is NULL 
and 
t1.fk_client is NULL 
and 
t1.id=t2.id 
and 
t2.data = 'this is dummy text'; 

Я просматривал другие народы просит об этом, но я просто не могу получить мою голову вокруг него.

EDIT:

То, что я хочу сделать, это обновить t1.date_read с 2015-03-17 09:00:00 где t2.data равно 'this is dummy test'

+1

Какие столбцы вы хотите обновить и с какими значениями? – Avidan

+0

так в чем проблема? – Alex

+0

нет таблицы 't3', объявленной в запросе для вашего' t3.more_data2' – Alex

ответ

1

Что я хочу сделать, это t о обновлении t1.date_read с 2015-03-17 09:00:00 где t2.data равно 'this is dummy test'

Просто воткнуть ссылку на другую таблицу в пункте вашего обновления WHERE так:

UPDATE table1 
SET date_read = '2015-03-17 09:00:00' 
where table1.id IN (SELECT id from table1 as t1 
        INNER JOIN table2 as t2 ON t1.id=t2.id 
        WHERE t2.data = 'this is dummy test') 

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

--[code from above] 
AND 
DATE(table1.date) >= '2014-10-23' 
AND 
table1.direction = 10 
AND 
table1.date_read is NULL 
AND 
table1.fk_client is NULL 
0

Прежде всего у вас есть какие-то ошибки в запросе

  1. t1* отсутствующая точка ->t1.*

  2. t3.more_data2 - t3 не decared в запросе

  3. t2.data = 'this is dummy text; пропустил близко котировку

  4. неясного объединение таблиц ключевых

Так попробуйте этот исправленный запрос и попытаться объяснить свои цели:

SELECT 
    t1.*, 
    t2.data, 
    t2.more_data 
FROM 
    table1 as t1, 
INNER JOIN 
    (SELECT * 
    FROM table2 
    WHERE 
     data = 'this is dummy text' 
    ) as t2 
ON 
    t1.id=t2.id 
WHERE 
    DATE(t1.date) >= '2014-10-23 
    AND 
    t1.direction = 10 
    AND 
    t1.date_read is NULL 
    AND 
    t1.fk_client is NULL