Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server T-SQL语句(如果存在)选择并插入_Sql Server_Tsql - Fatal编程技术网

Sql server T-SQL语句(如果存在)选择并插入

Sql server T-SQL语句(如果存在)选择并插入,sql-server,tsql,Sql Server,Tsql,我怎样才能做到这一点…真的需要建议吗?我想获取满足条件的id,然后在查询中使用它 IF EXISTS (Select sn_id as snid FROM device.sn WHERE dname_id = 62 and sn_value = '123415') BEGIN SELECT MAX(id) AS maxid FROM device.list INSERT INTO parts (sn_id,device_id) VALUES (snid, ma

我怎样才能做到这一点…真的需要建议吗?我想获取满足条件的id,然后在查询中使用它

   IF EXISTS (Select sn_id as snid FROM device.sn WHERE dname_id = 62 and sn_value = '123415')
    BEGIN

    SELECT MAX(id) AS maxid FROM device.list 

    INSERT INTO parts (sn_id,device_id) VALUES (snid, maxid)

    END
    ELSE
    BEGIN
      PRINT 'id does not exist'
    return 
    END

您可以使用变量存储两个查询的结果,然后在
INSERT
语句中使用这些值

如果您使用的是Microsoft SQL Server,那么以下操作可能会起作用(但可能存在表面语法错误,因为它尚未经过测试)。注意,我假设列的类型是
int

DECLARE @snid int
SET @snid = NULL
Select @snid = sn_id FROM device.sn WHERE dname_id = 62 and sn_value = '123415'

IF @snid IS NULL
BEGIN
  PRINT 'id does not exist'
END
ELSE
BEGIN
  DECLARE @maxid int
  SELECT @maxid = MAX(id) AS maxid FROM device.list 
  INSERT INTO parts (sn_id,device_id) VALUES (@snid, @maxid)
END

在SQLServer中。此脚本首先插入记录,然后检查插入行的计数

  INSERT INTO parts (sn_id, device_id)    
  SELECT sn_id, (SELECT MAX(id) FROM device.list)
  FROM device.sn 
  WHERE dname_id = 62 and sn_value = '123415'  

  IF @@ROWCOUNT = 0 PRINT 'id does not exist'

您正在使用哪个数据库服务器?我的sql?ms sql server?你是sql之神,丹尼尔。谢谢。op可能不知道插入..选择模式。解释可能对他有帮助。
  INSERT INTO parts (sn_id, device_id)    
  SELECT sn_id, (SELECT MAX(id) FROM device.list)
  FROM device.sn 
  WHERE dname_id = 62 and sn_value = '123415'  

  IF @@ROWCOUNT = 0 PRINT 'id does not exist'