簡體   English   中英

SQL: SELECT 如果一列中的條目對應於不同表的另一列

[英]SQL: SELECT if entry in one column corresponds to another column of a different table

我的數據庫中有兩個表。 第一個, [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 |      

我只想 select 來自[nodes]的那些節點和數據,它們在[nodeActivity]表中有相應的條目。

例如,在上述情況下,我想排除node3data7 ,因為[nodeActivity]中不存在 node3 。 如何以最有效的方式完成上述任務?

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'

這應該工作

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

希望這可以幫助。

請參閱對 select unquie 行的新查詢。

select * from nodes where node_name in (select node_name from nodeActivity)
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM