从匹配所有子查询值的表中选择所有值

时间:2013-08-14 14:50:21

标签: sql sql-server tsql

所以我有一个从子查询返回的值列表,并希望从另一个表中选择与该子查询的值匹配的所有值。是否有一种特别的方式可以解决这个问题?

到目前为止,我已经尝试过:

select * from table where tableid = select * from table1 where tableid like '%this%'

4 个答案:

答案 0 :(得分:1)

select * from table where tableid in(select tableid 
from table1 
where tableid like '%this%')

答案 1 :(得分:0)

select * from table where tableid IN 
(select tableid from table1 where tableid like '%this%')

子查询需要返回您要求的内容。此外,如果结果超过1,则需要IN而不是=

答案 2 :(得分:0)

这将有效

  select * from table where tableid in
       (select tableid from table1 where tableid like '%this%')
当子查询仅返回1条记录时,

=起作用 当子查询仅返回1个或多个记录时,in起作用

答案 3 :(得分:0)

我正在阅读一本SQL Server书籍,并且为了提高速度和效率,它使用EXISTS子句中的WHERE语句强调了这一点。这是一个潜在的解决方案。

SELECT
     *
FROM
    tableName AS t
WHERE
    EXISTS(
        SELECT
            1
        FROM
            table1 AS s --as in subtable or something like that
        WHERE
            t.tableid = s.tableid
                AND
            s.tableid like '%this%'
            )