Sql server SQL Server中的if not exists查询出错
以下查询有什么问题?我找不到错误。有人能帮忙吗 你能告诉我这个问题吗Sql server SQL Server中的if not exists查询出错,sql-server,mssql-jdbc,Sql Server,Mssql Jdbc,以下查询有什么问题?我找不到错误。有人能帮忙吗 你能告诉我这个问题吗 IF (NOT EXISTS(SELECT * FROM chennai_metro_data WHERE TIME1 ='09:00' AND DATE1 ='1-23-2017')) BEGIN INSERT INTO chennai_metro_data VALUES (2021700002,'1-23-2017','09:00',1,
IF (NOT EXISTS(SELECT *
FROM chennai_metro_data
WHERE TIME1 ='09:00' AND DATE1 ='1-23-2017'))
BEGIN
INSERT INTO chennai_metro_data
VALUES (2021700002,'1-23-2017','09:00',1,0,555555)
END
ELSE
BEGIN
UPDATE chennai_metro_data
SET CUMFLOW = 555555
WHERE TIME1 = '09:00' AND DATE1 = '1-23-2017'
END
我得到了这个错误:
Msg 206,16级,状态2,第1行操作数类型冲突:int与日期不兼容
作为最佳实践,在使用
INSERT
时,您应该始终定义要插入的列列表-这有助于避免许多问题
另外:对于日期,要独立于任何语言和区域设置,请尝试使用ISO-8601格式-yyyyymddd
仅用于日期(无时间),或YYYY-MM-DDTHH:MM:SS
用于日期和时间
因此,请尝试以下代码:
INSERT INTO chennai_metro_data(col1, col2, ...., colN)
VALUES (2021700002, '20170123', '09:00', 1, 0, 555555)
并将
col1
thorughcolN
替换为要插入数据的表中的实际列名。最佳做法是,在使用insert
时,应始终定义要插入的列列表-这有助于避免许多问题
另外:对于日期,要独立于任何语言和区域设置,请尝试使用ISO-8601格式-yyyyymddd
仅用于日期(无时间),或YYYY-MM-DDTHH:MM:SS
用于日期和时间
因此,请尝试以下代码:
INSERT INTO chennai_metro_data(col1, col2, ...., colN)
VALUES (2021700002, '20170123', '09:00', 1, 0, 555555)
并将
col1
thorughcolN
替换为要插入数据的表中的实际列名。最佳做法是,在使用insert
时,应始终定义要插入的列的列表。。。。。这有助于避免很多问题!此外,对于日期数据类型的字符串表示,请使用yyyy-mm-dd或yyyymmdd。@marc_s it works!!非常感谢。根据您的建议,我已经添加了列列表。作为最佳实践,在使用INSERT
时,您应该始终定义要插入的列列表。。。。。这有助于避免很多问题!此外,对于日期数据类型的字符串表示,请使用yyyy-mm-dd或yyyymmdd。@marc_s it works!!非常感谢。根据您的建议,我已经添加了列列表。只需添加,当您在没有列出列的insert中出现adat不匹配错误时,几乎可以肯定insert中的列与表中的列顺序不同。这就是为什么始终添加列列表非常重要的原因之一。此外,有时人们实际上会更改表中的列顺序。它们不应该(因为这样东西会断开),但它们会断开。只需添加,当插入中出现adat不匹配错误而未列出列时,几乎可以肯定插入中的列与表中的列的顺序不同。这就是为什么始终添加列列表非常重要的原因之一。此外,有时人们实际上会更改表中的列顺序。他们不应该这样做(因为这样东西就坏了),但他们确实这样做了。