memsql多表删除,有可能吗?

时间:2016-10-03 13:36:34

标签: mysql sql-delete memsql

MEMSQL!我想删除一个表中的记录,该表在多个字段的另一个表中具有匹配项。这可能吗?

我将使用的MySql查询可能是:

delete from t1 used t1,t2 where t1.f1=t2.f1 and t1.f2=t2.f2

delete t1 from t1,t2 where...

根据http://docs.memsql.com/docs/delete

  

MemSQL尚未完全支持多表DELETE语句。   WHERE子句中的子查询是唯一的多表DELETE   允许的。

我可以在delete where子句中使用多个条件而不使用concat等吗?

P.S。抱歉我的英语很糟糕

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

delete from t1 where exists (select 1 from t2 where t1.f1=t2.f1 and t1.f2=t2.f2)

答案 1 :(得分:0)

尝试从另一个表更新表的某些字段时遇到了同样的问题。

问题在于 无法转换且与分片键不匹配的相关子选择' MemSQL Distributed 不支持 所以我的解决方案是创建一个选择查询,生成更新查询,然后运行它们。这是一个简化的生成器查询:

select concat('update table1 set t1_code=\'',t2_code,
    '\',t1_url=\'',t2_url,
    '\',t1_width=\'',t2_width,
    '\' where t1.id=',t2.id,';') query
from t1
inner join t2 on t2.id=t1.id;

为需要以;分隔的更新的每一行生成更新查询。

生成删除会更加轻松 - 您只需选择要删除的ID并生成查询delete from t1 where id in (-the list of ids that was selected for deletion-)

这是我对此memsql限制的解决方法。