如果表中存在值,则不要插入并返回其id,否则插入并返回范围标识

时间:2017-05-18 06:23:22

标签: sql sql-server

我写了一个sql查询来插入记录,如果它不存在&返回它的范围标识。

IF NOT EXISTS(SELECT email from tableUser
where email='a@b.com')
INSERT INTO tableUser (name, countryCode, mobile, email, ip)
VALUES ('name', 91, 9811223344, 'a@b.com', 1)  SELECT SCOPE_IDENTITY()

但如果记录存在,那么我想返回它的ID。

注意:ID是表格中的标识列

2 个答案:

答案 0 :(得分:1)

在查询下方尝试:

   IF NOT EXISTS(SELECT email from tableUser where email='a@b.com')
   BEGIN
       INSERT INTO tableUser (name, countryCode, mobile, email, ip)
       VALUES ('name', 91, 9811223344, 'a@b.com', 1)  

       SELECT SCOPE_IDENTITY()
   END
   ELSE 
   BEGIN

      SELECT Id FROM tableUser where email='a@b.com'

   END

答案 1 :(得分:0)

您可以使用带有lazy var managedObjectModel: NSManagedObjectModel = { let modelURL = Bundle.main.url(forResource: "VerseApp", withExtension: "momd")! print(modelURL) return NSManagedObjectModel(contentsOf: modelURL)! }() 子句的MERGE。类似的东西:

OUTPUT

(请注意,我也将移动设备更改为文本 - 尽管移动设备号码由数字组成,但我们不会对它们进行数学运算,并且通常例如前导零可能很重要,因此通常最好不要存储它们作为实际数字)