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