我对SQL很新。我正在尝试编写一个查询,该查询将获取与单个查询中的搜索记录共享值的相关记录。
例如下面,如果一条记录中包含“否”,我希望它返回所有共享共同“字母”的记录
Letter;Present A;Yes A;No A;Yes B;Yes B;Yes B;Yes
返回:
Letter;Present A;Yes A;No A;Yes
答案 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
的字母列表中的字母中重新选择。
换句话说,子查询是一个过滤器。