2012-03-07 3 views
0

Ребята вы можете мне помочь? не работает вопрос?Использование ограничения в левом соединении в mysql

UPDATE DB_1 
left join blacklist as blk 
    on DB_1.last_email=blk.email 
SET DB_1.sampling = ? 
WHERE blk.email IS NULL 
    and DB_1.sampling IS NULL 
LIMIT "+slot; 

Мне нужно обновить строку 25k в то время, но это не работает. Как создать запрос, который работает? Я подумывал опустить левое соединение и использовать IN для соединения.

+0

Проверьте этот ответ: [Есть ли альтернатива с использованием LIMIT?] (Http://stackoverflow.com/questions/7940440/там--ан-альтернатива-к-в-с пределом/7947425 # 7947425) –

ответ

1

Вы хотите обновить строки в DB_1, которых нет в blacklist?

Вы можете попробовать:

UPDATE 
    DB_1 
SET 
    DB_1.sampling = ? 
WHERE 
    NOT EXISTS 
     (SELECT * 
     FROM blacklist AS blk 
     WHERE blk.email = DB_1.last_email 
    ) 
ORDER BY 
    <something> 
LIMIT 
    <whatever> 

или:

UPDATE 
     DB_1 AS upd 
    JOIN 
     (SELECT t.PK 
      FROM 
        DB_1 AS t 
       LEFT JOIN 
        blacklist AS blk 
         ON blk.email = t.last_email 
      WHERE 
       blk.email IS NULL 
      ORDER BY 
       <something> 
      LIMIT 
       <whatever> 
     ) AS lim 
      ON lim.PK = upd.PK 
SET 
    upd.sampling = ? 
Смежные вопросы