表 myTbl 具有值
ID Number
1 12458
2 45896
3 12458
4 87456
有如下查询:
SELECT TOP 1 n.abonent_name , ad.address
FROM dbo.names n
INNER JOIN dbo.addresses ad on n.address_id = ad.id
WHERE n.number = (every number from myTbl)
想从myTbl插入查询 Where clause 每个数字,然后将每个数字的响应插入虚拟表 #tbl ,例如 insert into #tbl abonent_name and address where number = 12458 ,在此插入之后,在where子句中写入另一个数字45896然后插入#tbl等等 .
CREATE TABLE #tbl
(
id identity(1,1),
abonent_name varchar(20),
address varchar(50)
)
想要没有光标写它
2 回答
试试上面 . 但是你可以通过以下方式一举两得
您不需要使用游标 . 如果
addresses
表中每个名称可以有多于1行,则可以使用以下模式:此代码将在
#tbl
表中插入myTbl
表中存在的每个名称的第一个(字母)地址 . 名称将按字母顺序升序排序 . 条件x.RowNumber=1
将在多个匹配的情况下过滤第一个地址 .