【问题标题】:Insert same information to all stores向所有商店插入相同的信息
【发布时间】:2014-03-29 10:56:39
【问题描述】:

我的数据库中有很多商店,并且我有一些必须存在于所有商店中的类似数据。这是我的例子:

INSERT INTO [dbo].[stores] 
            ([identifiers], 
             [sales_price], 
             [discount],  
             [store]) 
VALUES      ('9788276911',  
             99, 
             20, 
             'store121') 

有什么方法可以在所有商店中插入这些数据,而不仅仅是“store121”?真的只是在寻找一个简单的出路:)

【问题讨论】:

    标签: sql sql-server-2008 insert


    【解决方案1】:

    首先,如果表中没有商店名称,则应创建一个表并用名称填充它(从 Excel 复制/粘贴)。

    如果我们假设您的姓名在表 StoreNames 的列 Store 中,您可以使用这样的查询将相同的数据插入到表 stores 中,用于您的所有商店

    INSERT INTO [dbo].[stores] 
                ([identifiers], 
                 [sales_price], 
                 [discount],  
                 [store]) 
    SELECT '9788276911',  
            99, 
            20,
            [store]
    FROM StoreNames
    

    SQLFiddle DEMO

    【讨论】:

    • 好吧,我实际上有一个带有 NAME 的存储表,但问题是这个数据库比这复杂得多,如果我可以自己编写存储,它会让事情变得更容易。因为我不想要所有商店的相似数据,只有 15 家。
    【解决方案2】:
    update stores
    set identifiers = '9788276911',
        sales_price = 99,
        discount = 20
    

    将更新所有记录。

    【讨论】:

    • 我需要向折扣表中的所有商店插入相同的数据:store1、store2、store3 等。更新会这样做吗?
    • 不,这不仅会更新现有记录。在循环中执行或使用这样的自我定制插入语句:insert into t (col1, col2) values (1,2),(3,4),(5,6)
    • @op 你想从商店表中插入折扣表吗?
    • 不,我只想将相同的数据插入到 15 个不同的商店名称中。
    • @Lebowski 你从哪里得到你的商店名称?
    【解决方案3】:

    使用@Nenad Zivkovic 提出的解决方案,您还可以在行构造函数中枚举您的 15 家商店,而不是读取商店表,如果这样更容易的话:

    INSERT INTO [dbo].[stores] 
                ([identifiers], 
                 [sales_price], 
                 [discount],  
                 [store]) 
    SELECT '9788276911',  
            99, 
            20,
            [store]
    FROM  (values
      ('store1'),('store2'),('store3'),('store4')) x(store)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      相关资源
      最近更新 更多