我有一张像
这样的动物的桌子我想在此表中插入新动物,而不是从CSV文件中读取动物名称。
假设我在文件中有以下名字
狮子,虎,美洲虎
由于这些动物已经在“动物”表中,应该是一个单一的SQL查询,它将确定动物是否已经存在于表中。
修订版1
我想要一个查询,它会给我已经在表格中的动物列表。我不想要一个查询来插入那个动物。 我只想要重复的动物
答案 0 :(得分:1)
要检查狮友是否已经在桌子中:
select count(*) from animals where name = 'Lion'
您可以使用where
子句在一个查询中执行检查和插入:
insert into animals (name)
select 'Lion'
where not exists
(
select * from animals where name = 'Lion'
)
在回复您的评论时,选择动物的子列表:
select name from animals where name in ('Lion', 'Tiger', 'Jaguar')
对于已经存在的每只动物,这将返回最多3行。
答案 1 :(得分:0)
SELECT COUNT(your_animal_column)FROM tblAnimals WHERE your_animal_column =?;
问号由您的csv值填充。 如果此语句返回的值大于0,则该值已存在
答案 2 :(得分:0)
如果您的传入文件已经采用标准化列格式,而不是像您显示的那样以逗号分隔,那么应该很容易。为插入创建一个临时表,然后像..
insert into YourLiveTable ( animalname )
select Tmp.animalname
from YourTempInsertTable Tmp
where Tmp.animalname not in
( select Live.animalname
from YourLiveTable Live )
要匹配您修改的请求...只需使用选择部分并将“NOT IN”更改为“IN”
select Tmp.animalname
from YourTempInsertTable Tmp
where Tmp.animalname IN
( select Live.animalname
from YourLiveTable Live )
答案 3 :(得分:0)
怎么样
SELECT ANIMAL_NAME, COUNT(*)
FROM ANIMALS
GROUP BY ANIMAL_NAME
HAVING COUNT(*) > 1
这应该为您提供所有重复的条目