4

どうすればこれを可能にすることができますか..本当にアドバイスが必要ですか?条件が満たされた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
4

3 に答える 3

3

変数を使用して 2 つのクエリの結果を保存し、それらの値を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
于 2013-01-31T05:48:02.440 に答える
1

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'
于 2013-01-31T08:29:24.397 に答える
0
Declare @snid int=null
Declare @maxid int=1 -- if no value exists in device.list table
set @snid = (select sn_id from device.sn WHERE dname_id = 62 and sn_value = '123415')
set @maxid = (select MAX(id) AS maxid FROM device.list)
if @snid is not null
Begin
  insert into parts(sn_id,device_id)
  values(@snid,@maxid)
End
else
Begin
  print 'ID does not exist'
End
于 2013-01-31T06:39:02.010 に答える