2012-03-31 29 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');