这是我的问题,
我必须用join语句在mysql中构建一个查询。。。
我的数据库表如下所示:

table 1:
    contact, with contact_id, contact_value, contact_relation
table 2 :
    relation, with relation_id, relation_one, relation_two

我必须从联系人中删除联系人具有关系值(关系id)和所有这些关系,但仅当我的关系值等于预定义值时。。。
所以我的想法是这样的:
DELETE FROM 'relation' INNER JOIN contact ON contact.contact_relation = relation.relation_id WHERE relation_one = MyValue

但这不是我的意思。。。
我在我的mysql中用这种方式尝试:
DELETE relation.* FROM `relation` INNER JOIN `contact` ON `contact`.`contact_relation`=`relation`.`relation_id` WHERE `relation_one` = 48

我想这可能是个愚蠢的问题即使是一个“已经回答了一个”,但我仔细查看了堆栈,发现了类似的问题,但并没有解决我的问题,因为当我应用这个查询时,它会删除所有relation_one = 48的关系,而不仅仅是我需要的关系。。。(我是指在联系人关系下引用到联系人表中的那些关系(如果这些关系的relation_one设置为48,则可以删除这些关系的id!)
我的意思是:我可以在关系表中有100条记录,其中relation_one是48。。。但我只想删除这些“关系”,其中relation_id = contact_relation。。。我的contact.contact_relation在大多数情况下是null。。。但有时,对于2/100,它是一个现存的写在那里…这些关系我“可能不得不”删除。。。

最佳答案

使用左联接删除时,请指定要删除的表而不是列:

DELETE `relation` FROM `relation`
   INNER JOIN `contact` ON `contact`.`contact_relation`=`relation`.`relation_id`
   WHERE `relation_one` = 48

10-04 10:40
查看更多