TSQL中是否存在此查询语法的实现?

Pet*_*ter 2 t-sql sql-server subquery

在某些SQL方言中,您可以声明(某些内容):

SELECT * FROM SomeTable WHERE (val1,val2) IN 
  (SELECT val1,val2 FROM SomeOtherTable)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在我使用的TSQL(sql server 2k)中这样做.

我知道(并且现在使用)变通方法,比如使用连接或连接值,但TSQL中是否有一些语法我忽略了这样做?

更新:这是有效的SQL-99语法,这就是为什么我认为连接是一种解决方法,即使它更高效.我的问题可能更好:

在TSQL中是否有这种语法的实现?

UPDATE2:我刚用Mysql测试了这个语法,它在那里工作得很好.

Qua*_*noi 10

SELECT  *
FROM    SomeTable st
WHERE   EXISTS
        (
        SELECT  1
        FROM    SomeOtherTable sot
        WHERE   sot.val1 = st.val1
                AND sot.val2 = st.val2
        )
Run Code Online (Sandbox Code Playgroud)

这实际上IN是使用任何SEMI JOIN方法优化构造的内容.

至于你的问题,

是否有这种语法的实现T-SQL

答案是否定的

正如文件所说:

... subquery具有列的结果集.此列必须具有相同的数据类型test_expression.

  • @Peter:你是怎么做出这么简短的评论的? (2认同)