我有2张这样的表
word_map(sno(auto_inc),wm_id,service_id,word_id,base_id,root_id);
其中sno仅为索引自动递增。
wm_id是每个服务的唯一ID (serviceid,wm_id一起形成一个唯一的密钥)。
我的要求现在是我要删除此表中的记录,其中表中不存在单词的base_id或root_id
例如,
一个新单词,其中tr_id = 4,其base_id = 2,root_id = 1则必须有两个其他记录,其中tr_id为s 2和1,否则我们可以将其称为孤儿,并且必须删除wm_id = 4的记录,然后必须删除其他wm_ids的记录,其中这个4作为base_id或root_id,因为它们现在也是孤立的,如果4被删除等等。
有人可以建议我解决这个问题。
我尝试使用while编写一个过程,其中有一个查询,如
从words_map中删除base_id不在(从words_map中选择wm_id)或root_id不在(从words_map中选择wm_id) 但是使用这种嵌套查询删除/或更新同一个表是不可能的,所以我正在寻找另一种方法。
我想把这些wm_ids读成一个数组,然后一个一个地读取基于那个,但我不认为我们有存储的数组 程序
光标是这种情境的替代方案。
或针对此问题的任何其他最佳解决方案。
编辑1:请通过此http://sqlfiddle.com/#!2/a4b6f/15获取明确的实验数据
任何和早期的帮助将不胜感激