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