SQL: SELECT, если запись в одном столбце соответствует другому столбцу другой таблицы - PullRequest
2 голосов
/ 08 июля 2011

У меня есть две таблицы в моей базе данных.Первый, [nodeActivity] имеет следующие два столбца ( первичный ключ = имя_узла )

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

Второй, таблица называется [node] имеет следующие столбцы ( без первичного ключа )

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 |      

Я хочу выбрать только те узлы и данные из [узлов] , которые имеютсоответствующая запись в таблице [nodeActivity] .

Например, в приведенном выше случае я хочу исключить node3 и data7, поскольку node3 отсутствует в [nodeActivity] .Как можно достичь вышеизложенного наиболее эффективным способом?

Ответы [ 4 ]

4 голосов
/ 08 июля 2011
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 голос
/ 08 июля 2011
select * from nodes where node_name in (select node_name from nodeActivity)
1 голос
/ 08 июля 2011

Это должно сработать

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

Надеюсь, это поможет.

См. Новый запрос для выбора лишних строк.

0 голосов
/ 08 июля 2011
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
...