SQL:SELECT如果一列中的条目对应于另一个表的另一列

时间:2011-07-08 13:14:52

标签: sql sql-server database join

我的数据库中有两个表。第一个 [nodeActivity] 包含以下两列(主键= node_name

node_name | last_updated |
          |              |
node 1    |  00:00:00    |
node 2    |  00:00:01    |

第二个名为 [nodes] 的表格包含以下列(无主键

node_name |  data   |  time     |
          |         |           | 
node 1    |  data1  |  00:00:01 |    
node 2    |  data2  |  00:00:01 |     
node 1    |  data3  |  00:00:02 |    
node 2    |  data5  |  00:00:02 |    
node 1    |  data6  |  00:00:03 |
node 3    |  data7  |  00:00:03 |      

我想只从 [nodes] 中选择那些节点和数据,这些节点和数据在 [nodeActivity] 表中有相应的条目。

例如,在上述情况下,我想要排除node3data7,因为 [nodeActivity] 中不存在node3。 如何才能以最有效的方式完成上述工作?

4 个答案:

答案 0 :(得分:4)

SELECT DISTINCT n.node_name, n.data
    FROM nodes n
        INNER JOIN nodeActivity na
            ON n.node_name = na.node_name
                AND na.time = '00:00:00'

答案 1 :(得分:1)

这应该有效

SELECT DISTINCT n.* FROM [nodes] AS n
INNER JOIN [nodeActivity] AS na
ON n.node_name = na.node_name

希望这有帮助。

请参阅新查询以选择unquie行。

答案 2 :(得分:1)

select * from nodes where node_name in (select node_name from nodeActivity)

答案 3 :(得分:0)

SELECT n.node_name, n.last_updated, na.data, na.time
FROM [nodes] n
INNER JOIN [nodeActivity] na ON n.node_name = na.node_name