【发布时间】:2012-02-18 00:31:09
【问题描述】:
我在从 MySQL 数据库中删除行时遇到困难。我有两个要加入的表。加入可能不是最好的解决方案,我绝对愿意接受建议。表格如下
Table a
part_number、cat_code、description
Table b
part_number、cat_code、description
表 b 是其内容最近更新的正确表。表 b 只有一个产品线。表 a 包含公司当前和以前制造的所有产品线。表 a 包含重复的旧数据和零件编号,并与多个 cat_code 相关联。
cat_codes 应该和 part_numbers 是一对多的关系。例如 part_number 123,456 和 789 的 cat_code 可以是 1A。两个表的主键都是 part_number+cat_code
当我运行这个 select 语句时,我得到了我需要从表 a 中删除的唯一标识符的输出。
SELECT CONCAT(a.part_number,a.cat_code)
FROM
b
INNER JOIN
a
WHERE
a.part_numer = b.part_number
AND a.cat_code != b.cat_code
但是当我尝试在 DELETE FROM 语句中使用该 select 语句时,它不起作用。这是损坏的声明。
DELETE FROM
a
WHERE
CONCAT(part_number,cat_code) IN (SELECT CONCAT(a.part_number,a.cat_code)
FROM
b
INNER JOIN
a
WHERE
a.part_numer = b.part_number
AND a.cat_code != b.cat_code)
任何帮助将不胜感激,谢谢
【问题讨论】:
-
它给出了什么错误?
-
没有错误,只返回不受影响的行。
标签: mysql