怎么来这个查询:
select * FROM `store_catalog_product_option` JOIN `store_catalog_product_option_type_value` WHERE `product_id`=15676 AND `store_catalog_product_option_type_value`.`sku` LIKE '%UNIT_%'
检索数据
但替换
select *
带
delete
就是这样
delete FROM `store_catalog_product_option` JOIN `store_catalog_product_option_type_value` WHERE `product_id`=15676 AND `store_catalog_product_option_type_value`.`sku` LIKE '%UNIT_%'
给出语法错误:
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在&JOH;
store_catalog_product_option_type_value
WHEREproduct_id
= 15676 AND`sto'附近使用正确的语法。在第1行
答案 0 :(得分:2)
你的JOIN应该有一个ON部分
答案 1 :(得分:1)
对于第一个多表语法,仅删除
FROM
子句之前列出的表中的匹配行。第二个多表语法,只删除FROM
子句(USING
子句之前)中列出的表中的匹配行。
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
或者:
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
对于LEFT JOIN
,您应该使用类似
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
答案 2 :(得分:1)
您可以尝试这样的事情: -
DELETE FROM `store_catalog_product_option` A
JOIN `store_catalog_product_option_type_value' B
ON A.ID = B.ID
WHERE A.`product_id`=15676
AND B.`sku` LIKE '%UNIT_%'
或者您可以使用: -
DELETE A
FROM `store_catalog_product_option` A
JOIN `store_catalog_product_option_type_value' B
ON A.ID = B.ID
WHERE A.`product_id`=15676
AND B.`sku` LIKE '%UNIT_%'
...仅从store_catalog_product_option
答案 3 :(得分:0)
我确实需要使用多表语法,包括JOIN的ON条件。
由于我想删除两个表中的行,这是我的工作查询,在您的帮助之后:
DELETE O, V FROM `store_catalog_product_option` O JOIN `store_catalog_product_option_type_value` V on O.option_id=V.option_id WHERE `product_id`=15676 AND V.`sku` LIKE '%UNIT_%'