DISTINCTROW [MyTable的]删除的结果重复MyTable的条目。例如:
select distinctrow items
items.item_number, items.name
from items
join orders on orders.item_id = items.id;
尽管的加入让你的ITEM_NUMBER相同的名字和多次时,有不止一个数量级呢,DISTINCTROW减少这对每个项目一行。因此,整个联合只是为了确保您只选择至少存在一个订单的项目。就我所知,您在任何其他DBMS中都找不到DISTINCTROW。可能是因为它不是必需的。当检查是否存在时,我们当然使用EXISTS
(或者对于此事使用IN
)。
您正在加入MyTable和AnotherTable,并且由于某种原因希望为一个AnotherTable记录获得相同的MyTable记录多重折叠,因此您只需使用DISTINCTROW即可获取一次。如果您有两个不同 MyTable记录为一个AnotherTable记录您的查询将(希望)失败。
什么更新所做的是:
update anothertable
set tesserecorso = (select top 1 j5f7nr from mytable where mytable.j5binb = anothertable.gkbinb and ...)
where exists (select * from mytable where mytable.j5binb = anothertable.gkbinb and ...)
但这使用大致相同的子查询两次。所以我们想要从查询中进行更新。
最简单的方式,让每<一些列>一个结果记录在一个标准的SQL查询汇总数据:
select *
from anothertable a
join
(
select j5binb, j5bhnb, j5bdcd, max(j5f7nr) as j5f7nr
from mytable
group by j5binb, j5bhnb, j5bdcd
) m on m.j5binb = a.gkbinb and m.j5bhnb = a.gkbhnb and m.j5bdcd = a.gkbdcd;
如何写updateble查询是从一个DBMS之间是不同的。这里是SQL-Server的最终更新声明:
update a
set a.tesserecorso = m.j5f7nr
from anothertable a
join
(
select j5binb, j5bhnb, j5bdcd, max(j5f7nr) as j5f7nr
from mytable
group by j5binb, j5bhnb, j5bdcd
) m on m.j5binb = a.gkbinb and m.j5bhnb = a.gkbhnb and m.j5bdcd = a.gkbdcd;
你想达到什么目的?我对'DISTINCTROW'不熟悉,但它似乎在'UPDATE'中根本没有任何效果。查询是否需要在MyTable中用“第一个”J5F7NR值更新'AnotherTable'?如果有多行没有'DISTINCTROW',它们都是一样的 - 还是'J5F7NR'不同? –
我想我们可能需要一些数据来帮助我们。在Access中,您可以运行2个查询并发布数据:从[MyTable] inner join [AnotherTable] ...中选择[MyTable]。*并从[MyTable] inner join [AnotherTable]中选择[AnotherTable]。*。 ..'使用上面的连接标准?我们需要看到至少3个连接键值。像@StevenHibble一样,我在'Update'语句中使用'distinct'或'distinctrow'的预期结果。 – SMM
如果您可以在[SQL小提琴](http:// sqlfiddle。com /),在Access中使用和不使用DISTINCTROW时的行为不同,您可能会得到一个快速答案。 – Andre