2

誰でもこのSQLコードを手伝ってもらえますか。最初の一致でテーブル列FirstURLForSiteを1に更新しようとしていますが、コードに苦労しています。最初の一致を更新するだけです。

私がやろうとしていることを理解していただければ幸いです。

update [dbo].[at_WebsitesSearch]
set [FirstURLForSite] = 1
where(

left outer join
select min(ID) as rowid, [BaseURL]
from [dbo].[at_WebsitesSearch]
group by [BaseURL]) as FirstMatch on
[dbo].[at_WebsitesSearch].id = FirstMatch.rowid
where FirstMatch.rowid is null

データ例

BasesURL                                FirstURLForSite
http://asia1x1.net/                         1
http://asia1x1.net/                         0
http://asia1x1.net/                         0

http://australia.bedandbreakfasts.net/      1
http://australia.bedandbreakfasts.net/      0
http://australia.bedandbreakfasts.net/      0
4

2 に答える 2

3

これを試してみてください。現在のクエリを修正しようとしています

UPDATE  a
SET     a.FirstURLForSite = 1
FROM    at_WebsitesSearch a
        LEFT JOIN 
        (
            SELECT  MIN(ID) AS rowid, BaseURL
            FROM    at_WebsitesSearch
            GROUP   BY BaseURL
        ) FirstMatch
            ON FirstMatch.rowid = a.id
WHERE   FirstMatch.rowid IS NULL

更新 1

WITH records
AS
(
    SELECT  BasesURL, FirstURLForSite,
            ROW_NUMBER() OVER (PARTITION BY BasesURL ORDER BY BasesURL ASC) rn
    FROM    at_WebsitesSearch
)
UPDATE  records
SET     FirstURLForSite = CASE WHEN rn = 1 THEN rn ELSE 0 END
于 2013-03-02T13:35:42.930 に答える