如何从SQL中的字段中删除重复值?

如何从SQL中的字段中删除重复值?,sql,duplicates,Sql,Duplicates,我的SQL数据库中有两个表(比如cd目录)。我想把一个表中的记录(每晚重新创建)放到我的主表中。我只想将数量大于0的项目放入主表中。但是,夜间表中的某些项目将与主表中的项目具有相同的UPC条形码字段。我不想把这些放进去,前提是那些已经在主表中的数量大于0。否则,我希望数量大于0的所有条目从夜间转到主表 我就是不知道该怎么做。当然,我现在已经设置好了,以便将数量大于0的所有内容复制到主表中,但这意味着我可以为主表中已经存在的相同项目创建重复的列表(基于UPC的重复) 有人知道我怎么做吗?我的问题是

我的SQL数据库中有两个表(比如cd目录)。我想把一个表中的记录(每晚重新创建)放到我的主表中。我只想将数量大于0的项目放入主表中。但是,夜间表中的某些项目将与主表中的项目具有相同的UPC条形码字段。我不想把这些放进去,前提是那些已经在主表中的数量大于0。否则,我希望数量大于0的所有条目从夜间转到主表

我就是不知道该怎么做。当然,我现在已经设置好了,以便将数量大于0的所有内容复制到主表中,但这意味着我可以为主表中已经存在的相同项目创建重复的列表(基于UPC的重复)

有人知道我怎么做吗?我的问题是:

INSERT INTO main ( id, title, artist, qty, barcode ) 
SELECT nightly.PID, 
       nightly.Title, 
       nightly.Artist, 
       nightly.QtyAvail, 
       nightly.UPC 
FROM nightly 
WHERE nightly.QtyAvail > 0;

嗯,是的,从问题中漏掉了那个。无论如何,它都应该可以工作,因为从
每晚插入
main
的所有项目都已具有
qty>0
。但是,如果有一个表
daily
,并且从该表插入的项目
数量<0
,那么它将不起作用。所以改变了答案。看起来这对我来说是可行的,但不幸的是,它最终锁定了两个表,我必须进入并终止所有进程,然后重新启动mysqld等等……您的表中有多少记录?在表
main
中的
barcode
字段上是否有索引或主键?Hi Roman,主表大约有5k条记录,夜间表大约有30k条记录。我不知道如何使用索引和主键,所以我将不得不查找它。我担心更改主表中的任何一个都会影响使用此表运行的其他脚本…为了让你们不会感到被遗弃,我正在按照建议实现查询,并会让你们知道查询的进展情况(大约需要半个小时:()事实上,我现在很难弄清楚如何测试这个。。。
insert into main ( id, title, artist, qty, barcode )
select
    n.PID, n.Title, n.Artist, n.QtyAvail, n.UPC 
from nightly as n
where
    n.QtyAvail > 0 and
    n.UPC not in (select T.barcode from main as T where T.qty > 0)