mySQL填充缺少行的表

时间:2012-02-01 23:47:00

标签: mysql sql

我的游戏脚本有2个表,一个是所有武器游戏的数据库(db_firearms),另一个是商店中的武器列表(store_firearms)。

db_firearms

store字段表示它是否会出现在商店中,0 =否,1 =是)

id    name      store
-----------------------
1     Pistol    1
2     Shotgun   1
3     Sniper    0

store_firearms

weapon字段与db_firearms中的武器的id相关)

id    city      weapon
-----------------------
1     Miami     1
2     Miami     2
3     New York  2 

我想要做的是使用store_firearms表中的每个MISSING武器填充db_firearms表,其中store = 1(其中city = $ city)。

在mySQL中对此进行查询的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

编辑使用NOT EXISTS首次尝试完全拙劣。

INSERT INTO store_firearms (City, Weapon)
SELECT $city, F.Id
FROM db_firearms F        
WHERE F.Store = 1 AND NOT EXISTS (
    SELECT * FROM store_firearms WHERE City = $city AND Weapon = F.Id)

如果$ city是'New York',这会将'New York',1插入store_firearms

答案 1 :(得分:0)

试试这个:

SELECT  ID, Name, Store
FROM    db_firearms
WHERE   STORE = 1 AND
        ID NOT IN 
            (SELECT weapon 
            FROM store_firearms
            WHERE city = $city)