2012-03-31 75 views
0

目的:MySQL的地方插入不與條件語句

  • 使用,僅在MySQL,插入SKU,表名,蛞蝓表當一個SKU &表名沒有尚未設置。我有多個表可以有相同的SKU,但它們不一樣。所以它需要匹配sku +表名。
table1 
     SKU = 123 
     SKU = 234 
table2 
    SKU = 1234 
    SKU = 123 
    SKU = 45234 

slugs final result should be like 

slugs 
    sku = 123 , table = table1 
    sku = 234 , table = table1 
    sku = 1234, table = table2 
    sku = 123, table = table2 
    sku = 45334, table = table2 

I need to be able to look up sku's based off of the table name. 

CREATE TABLE `slugs` (
    `id` bigint(20) NOT NULL, 
    `slug` varchar(500) default NULL, 
    `tablename` varchar(129) default NULL, 
    `sku` varchar(100) default NULL, 
    `deleteme` tinyint(4) NOT NULL default '0', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

CREATE TABLE `tableA` (
    `NAME` varchar(160) default NULL COMMENT 'The products name.', 
    `SKU` varchar(100) NOT NULL default '' COMMENT 'Advertisers unique identifier for the product.', 
    PRIMARY KEY (`SKU`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

破碎MySQL代碼

INSERT INTO `slugs` (`sku`, `tablename`) 
Select `SKU`, 'tableA' 
from `tableA` 
where not exists 
(SELECT `slugs`.`sku` != `tableA`.`SKU` AND `slugs`.`tablename` != 'tableA'); 

回答

0

可惜你不能插入到一個表,然後從子查詢相同的表中選擇,但如果你對skutablename列的唯一約束,那麼你可以使用INSERT IGNORE INTO ...獲得同樣的效果。

+0

對不起,我是個「新手」,在此你可以給我是這樣的一個例子嗎?我可以更改表格的某些方面,但不能在slugs表格中找到id。 – Brad 2012-04-01 05:40:01

+0

'ALTER TABLE \'slugs \'ADD UNIQUE INDEX(\'sku \',\'tablename \');' – Neil 2012-04-01 21:03:35

+0

我不確定這會起作用。 table1可能有sku = 123,而table2可能也有sku 123 ... – Brad 2012-04-01 22:36:10

0

我能夠得到這個使用以下工作。由於在IRC

INSERT INTO `slugs` (`sku`, `tablename`) 
SELECT `SKU`, 'tableA', `NAME` FROM `tableA` 
WHERE NOT EXISTS (
    SELECT `sku`, `tablename` FROM `slugs` 
    WHERE `sku` = `tableA`.`SKU` and `tablename` = 'tableA' 
); 

j_wright --- OR這似乎是工作-------

INSERT INTO `slugs` (`sku`, `tablename`) 
select `SKU`, 'tableA' 
from `tableA` 
WHERE `SKU` NOT IN 
(select `sku` from `slugs` where `tablename` = 'tableA');