首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

[]SQL SERVER执行SQL语句的时候的两个有关问题

2012-12-20 
[求救]SQL SERVER执行SQL语句的时候的两个问题1.SQLSERVER有组合主键的时候,在子查询中不可以返回多列结果

[求救]SQL SERVER执行SQL语句的时候的两个问题
1.SQLSERVER有组合主键的时候,在子查询中不可以返回多列结果吗。例如
select * from Table1 where (id,type) in (select id,type from table2)

现在我只能想到的解决方案就是
select * from Table1 
where 
(cast(id as varchar(10)) + type) 
in (select cast(id as varchar(10)) + type from table2)

有其他的方式吗。

2.SQLSERVER
INSERT INTO [Role]
SELECT 1;

SELECT 2

上面insert报错的话。怎么让他继续执行下面的SELECT 2


= =求解释。。呜
[最优解释]
select * from Table1 where checksum(id,type) in (select checksum(id,type) from table2)
[其他解释]
第二个问题:
INSERT INTO [Role]
 SELECT 1;
 go
SELECT 2
[其他解释]
select * from Table1 where (id,type) in (select id,type from table2)
可以改成:

SELECT  *
FROM    table1 a
WHERE   EXISTS ( SELECT 1
                 FROM   ( SELECT    id ,
                                    type
                          FROM      table2
                        ) b
                 WHERE  a.id = b.id
                        AND a.type = b.type )


[其他解释]
问题1这样试试:

SELECT * FROM table1 AS A WITH(NOLOCK) 
WHERE EXISTS (SELECT 1 FROM table2 AS B WITH(NOLOCK) ON A.id=B.id AND A.[type]=B.[type])


[其他解释]
多列的时候用exists,而不是in
[其他解释]
引用:
select * from Table1 where checksum(id,type) in (select checksum(id,type) from table2)


谢谢
[其他解释]
引用:
多列的时候用exists,而不是in

大大能不能给个例子。
[其他解释]

求第二个问题~
[其他解释]
INSERT INTO [Role]
SELECT 1;
union all 
SELECT 2


------其他解决方案--------------------



谢谢各位大大...

热点排行