表A1
UserSN   UserID     UserNick
21       test3      测试3
22       test4      测试4
23       test5      测试5
24       test6      测试6
25       test7      测试7表B1
Id   SendSN   SendNick   RecvSN   RecvNick   ItemID
1    22       test4      24       test6      5
2    22       test4      24       test6      8
3    22       test4      24       test6      12通过查询表A1
select * from A1 where UserID='test4'  查询得到test4在表A1中的UserSN=22
select * from A1 where UserID='test6'  查询得到test6在表A1中的UserSN=24增加3条定义的数据到表B1
REPLACE INTO Present (SendSN,SendNick,RecvSN,RecvNick,ItemID) VALUES ('22','test4','24','test6','5');
REPLACE INTO Present (SendSN,SendNick,RecvSN,RecvNick,ItemID) VALUES ('22','test4','24','test6','8');
REPLACE INTO Present (SendSN,SendNick,RecvSN,RecvNick,ItemID) VALUES ('22','test4','24','test6','12');通过上面的命令可以看出我是让test4给test6送了3见件物品 ID分别为5,8,12但是这么查询命令太复杂
我想就用一条命令就完成
update 表A1里的test4并且获得UserSN的数值 and 表A1里的test6并且获得UserSN的数值 然后test4给test6送了3样东西,ItemID分别为5,8,12。送的数据增加到表B1里简单说也就是查询表A1 通过用户名获得UserSN 然后送到表B1里增加数据
2个查询 3个增加请问高手怎么精简呢?

解决方案 »

  1.   

    insert into Present(SendSN,SendNick,RecvSN,RecvNick,ItemID) values()where ItemID in (5,8,12);
      

  2.   

    只有增加 但是没查询test3获得UserSN的插入啊
      

  3.   

    INSERT INTO B1
    SET SendSN = (SELECT UserSN
                    FROM A1
                   WHERE UserID = 'test4'
                 )
      

  4.   

    如果你的ItemID都是来自另一个items表里的存在的记录。那么可以做到用一个sql插入
    (需要的输入是送礼人的id或nick,被送礼人的id或nick,所送礼品的itemid)
    但是这个sql比较复杂,效率也不算高,可读性不好,
    不提倡你使用。分开也许更好。再谈一下,你的B1表的SendNick和recvnick都是多余的,不必要的。