1
我有以下SQL腳本。正如你可以看到我手動@listingid
值設置爲30653.遍歷我的SQL Server數據庫中的所有記錄
但是這個腳本應該在@listingid
被分配[listings].id
列的值[listings]
表中的所有記錄執行。
DECLARE @profname nvarchar(150)
DECLARE @furl nvarchar(250)
DECLARE @city nvarchar(250)
DECLARE @listingid int
set @listingid=30653
--select the top 1 professionname
SELECT TOP 1 @profname=REPLACE(LOWER(pn.title),' ','-'),@furl=l.friendlyurl,@city=REPLACE(REPLACE(LOWER(l.city),'''',''),' ','-') FROM healthprof_professionnames hpn
INNER JOIN professionname pn ON pn.id=hpn.professionnameid
INNER JOIN listings l on l.id=hpn.healthprofid
WHERE [email protected] ORDER BY pn.title
--check if current friendlyurl already contains profession
IF NOT CHARINDEX(@profname,@furl)>0
SET @furl = @furl + '-' + @profname
IF NOT CHARINDEX(@city,@furl)>0
SET @furl = @furl + '-' + @city
SET @furl = @furl + '-3'
UPDATE listings set [email protected] WHERE [email protected]
這是非常程序的思維,而不是套思考。創建一個選擇來抓取您想要更改的所有記錄,然後將其轉換爲更新。一個查詢。這就是你通常需要的。 –
您還可以將URL翻譯回您正在查詢的記錄?然後你不必保持Listings表與專業表(etc)保持同步。 –
@TimLehner:謝謝,你是否可以舉一個例子說明如何做到這一點? – Flo