将此MS Access查询转换为在SQL Server中运行的语法是什么,因为它没有DistinctRow关键字
UPDATE DISTINCTROW [MyTable]
INNER JOIN [AnotherTable] ON ([MyTable].J5BINB = [AnotherTable].GKBINB)
AND ([MyTable].J5BHNB = [AnotherTable].GKBHNB)
AND ([MyTable].J5BDCD = [AnotherTable].GKBDCD)
SET [AnotherTable].TessereCorso = [MyTable].[J5F7NR];
答案 0 :(得分:3)
DISTINCTROW [MyTable]从结果中删除重复的MyTable条目。例如:
str_replace('.',',',$variable)
尽管联系人在多个订单时多次获得相同的item_number和名称,但DISTINCTROW会将此项减少为每个项目一行。因此,整个联接仅仅是为了确保您只选择至少存在一个订单的项目。据我所知,您在任何其他DBMS中都找不到DISTINCTROW。可能是因为它不需要。检查存在时,我们当然使用select distinctrow items
items.item_number, items.name
from items
join orders on orders.item_id = items.id;
(或EXISTS
)。
您正在加入MyTable和AnotherTable并期望出于某种原因为一个AnotherTable记录获取相同的MyTable记录,因此您只能使用DISTINCTROW获取一次。如果您为一个AnotherTable记录获得两个不同的 MyTable记录,您的查询将(希望)失败。
更新的作用是:
IN
但这两次使用大约相同的子查询。所以我们想要从查询中更新。
根据< some columns>获取一个结果记录的最简单方法在标准SQL查询中是聚合数据:
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 ...)
如何编写updateble查询不同于一个DBMS。以下是SQL-Server的最终更新语句:
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;
答案 1 :(得分:1)
MS Access SQL中的DISTINCTROW
谓词删除了连接语句中表的所有字段的重复项,而不仅仅是所选的查询字段(几乎所有SQL方言中都DISTINCT
都有)。因此,请考虑使用DISTINCT
谓词选择派生表中的所有字段:
UPDATE [AnotherTable]
SET [AnotherTable].TessereCorso = main.[J5F7NR]
FROM
(SELECT DISTINCT m.* FROM [MyTable] m) As main
INNER JOIN [AnotherTable]
ON (main.J5BINB = [AnotherTable].GKBINB)
AND (main.J5BHNB = [AnotherTable].GKBHNB)
AND (main.J5BDCD = [AnotherTable].GKBDCD)
答案 2 :(得分:0)
userSchema {
name: String,
....
....
}
答案 3 :(得分:0)
查询的另一个变体..(太懒了得到原始表)。 但是像上面的查询更新35行=,这一个
UPDATE [Albi-Anagrafe-Associati]
SET
[Albi-Anagrafe-Associati].CRegDitte = [055- Registri ditte].[CRegDitte],
[Albi-Anagrafe-Associati].NIscrTribunale = [055- Registri ditte].[NIscrTribunale],
[Albi-Anagrafe-Associati].NRegImprese = [055- Registri ditte].[NRegImprese]
FROM [055- Registri ditte]
WHERE EXISTS(
SELECT *
FROM [055- Registri ditte]-- [Albi-Anagrafe-Associati]
WHERE ([055- Registri ditte].GIBINB = [Albi-Anagrafe-Associati].GKBINB)
AND ([055- Registri ditte].GIBHNB = [Albi-Anagrafe-Associati].GKBHNB)
AND ([055- Registri ditte].GIBDCD = [Albi-Anagrafe-Associati].GKBDCD))