我有两个表:product(product_id,date)和sex(product_id,sex)。我该如何解决这个DELETE查询?
我想从产品表中删除所有带有此product_id和sex = 1的性别表中存在行的product_id的产品。
我也希望从性别表中删除所有包含我从产品表中删除的行中包含的product_id的行。执行
DELETE FROM products
WHERE product_id IN (SELECT product_id FROM @recordsToDelete);
DELETE FROM sex
WHERE product_id IN (SELECT product_id FROM @recordsToDelete);
但DECLARE语句之前(这可能会删除每PRODUCT_ID多行。)
到目前为止,我有
DECLARE @recordsToDelete AS TABLE(
int product_id
);
INSERT INTO @recordsToDelete(product_id)
SELECT product_id
FROM products p
JOIN sex s
ON p.product_id = s.product_id
WHERE s.sex = 1;
我会再与
SELECT * FROM @recordsToDelete;
测试给我一个语法错误。我注意到here DECLARE需要一个BEGIN/END复合语句,但我无法正确表述它。我怎样才能纠正我的错误?
编辑:
通过
CREATE TEMPORARY TABLE recordsToDelete(
product_id INT
);# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO recordsToDelete(product_id)
SELECT p.product_id
FROM products p
JOIN sex s ON p.product_id = s.product_id
WHERE s.sex =1;# Affected rows: 275
SELECT *
FROM recordsToDelete;
谢谢,它w现在开始。 – jela 2012-04-17 18:06:02