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