Mysql
如何刪除特定行
http://sqlfiddle.com/#!9/df6245
如何刪除品牌不等於 107 的所有行,例如上面的小提琴 GRPCD 44111 有 107,因此它不應刪除具有 GRPCD 44111 的兩行,但它將刪除 GRPCD 33111 的兩行,因為沒有品牌 107 值。請幫助 編輯 此查詢執行良好,有人可以給我更好的查詢。
DELETE FROM `products_cross` WHERE GRPCD NOT IN (SELECT GRPCD FROM products_cross WHERE brand=107)
您需要對 products_cross 進行這樣的子查詢,以便 Mysql 有一個臨時表來選擇想要的 id
CREATE TABLE IF NOT EXISTS `products_cross` ( `id` int(6) unsigned NOT NULL, `GRPCD` int(10) unsigned NOT NULL, `brand` int(5) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; INSERT INTO `products_cross` (`id`, `GRPCD`, `brand`) VALUES ('1', '33111', '107'), ('2', '33111', '103'), ('3', '44111', '105'), ('4', '44111', '101');
SELECT * FROM products_cross
編號 | GRPCD | 品牌 -: | ----: | ----: 1 | 33111 | 107 2 | 33111 | 103 3 | 44111 | 105 4 | 44111 | 101
DELETE FROM `products_cross` WHERE GRPCD NOT IN (SELECT GRPCD FROM (SELECT * FROM products_cross ) pc WHERE brand=107)
SELECT * FROM products_cross
編號 | GRPCD | 品牌 -: | ----: | ----: 1 | 33111 | 107 2 | 33111 | 103
db<>在這裡擺弄