相关记录

时间:2015-02-05 14:15:04

标签: sql

我对SQL很新。我正在尝试编写一个查询,该查询将获取与单个查询中的搜索记录共享值的相关记录。

例如下面,如果一条记录中包含“否”,我希望它返回所有共享共同“字母”的记录

Letter;Present
A;Yes
A;No
A;Yes
B;Yes
B;Yes
B;Yes

返回:

Letter;Present
A;Yes
A;No
A;Yes

3 个答案:

答案 0 :(得分:1)

使用子查询查找那些无字母。然后搜索值第一个字符位于找到的无字母的行。

select * from table
where letter in (select letter from table where present = 'No');

答案 1 :(得分:0)

您可以使用EXISTS子句:

SELECT *
FROM yourTable t1
WHERE EXISTS (SELECT 1
              FROM yourTable t2
              WHERE t1.Letter = t2.Letter
              AND t2.Present = 'No')

子查询将获得Present = No的每条记录 主查询将获得与子查询的结果共享Letter值的每条记录。

答案 2 :(得分:0)

您需要使用子查询..

SELECT a.letter, a.present
FROM yourTable a
WHERE a.letter IN (SELECT letter
                   FROM yourTable
                   WHERE present = 'No');

您在此处执行的操作是选择present = 'NO'所有字母,然后您只需从包含No的字母列表中的字母中重新选择。

换句话说,子查询是一个过滤器。