这是我的问题,
我必须用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