Sql 从特定列值的行组中选择一行
我想写一个查询来实现以下功能。我有一个表xyz,其中有多个行,在a列中有相同的列值1 我想在b列中找到,对于a列中值为1的行集合,b列中没有特定的值Sql 从特定列值的行组中选择一行,sql,select,Sql,Select,我想写一个查询来实现以下功能。我有一个表xyz,其中有多个行,在a列中有相同的列值1 我想在b列中找到,对于a列中值为1的行集合,b列中没有特定的值 Table xyz --------- a b 1 te 1 we 1 re 2 te 2 re 3 ge 4 re 所以基本上我想知道,对于a列中的一组值,b列是否没有“te”值 当我这样做的时候 Select a from xyz where b <> 'te' group by a 我会得到
Table xyz
---------
a b
1 te
1 we
1 re
2 te
2 re
3 ge
4 re
所以基本上我想知道,对于a列中的一组值,b列是否没有“te”值
当我这样做的时候
Select a from xyz where b <> 'te'
group by a
我会得到1,2,3和4的结果
但是我希望结果应该只包含1和2。请帮忙
Select a from xyz where (b<>'te') and ((a=1) or (a=2))
或作为变体
select a from xyz where (b<>'te') and (a in (1, 2))
我只是意识到我没有也仍然不明白你在问什么。你能试着再说一遍吗?我能想到的唯一一个基于此数据返回1和2的非平凡解释是:
SELECT DISTINCT q1.a FROM (SELECT a FROM xyz WHERE b='te') q1
JOIN (SELECT a FROM xyz WHERE b!='te') q2 ON
q1.a=q2.a
SELECT DISTINCT a FROM xyz WHERE a NOT IN (SELECT a FROM xyx WHERE b='te')
a的值是什么,使得有一行同时包含a和
“te”和同时具有a和除“te”以外的值的行
在这种情况下,查询将是:
SELECT DISTINCT q1.a FROM (SELECT a FROM xyz WHERE b='te') q1
JOIN (SELECT a FROM xyz WHERE b!='te') q2 ON
q1.a=q2.a
SELECT DISTINCT a FROM xyz WHERE a NOT IN (SELECT a FROM xyx WHERE b='te')
与示例中返回3和4或geo示例中返回1和2相对应的解释为:
SELECT DISTINCT q1.a FROM (SELECT a FROM xyz WHERE b='te') q1
JOIN (SELECT a FROM xyz WHERE b!='te') q2 ON
q1.a=q2.a
SELECT DISTINCT a FROM xyz WHERE a NOT IN (SELECT a FROM xyx WHERE b='te')
不存在te行的a的值是什么
在这种情况下,查询将是:
SELECT DISTINCT q1.a FROM (SELECT a FROM xyz WHERE b='te') q1
JOIN (SELECT a FROM xyz WHERE b!='te') q2 ON
q1.a=q2.a
SELECT DISTINCT a FROM xyz WHERE a NOT IN (SELECT a FROM xyx WHERE b='te')
如图所示,sqlfiddle出现问题,所以我使用了ideone
select a from xyz
where b! = 'tz' and
a in (select a from xyz where b = 'tz')
这就是你要找的吗?试试这个:
Select a from xyz where b = 'te'
group by a
您选择1和2类Sub 1 eng 1 Phy 1 chem 2 eng 2 chem 2 Phy 2 eng 3 his 3 geo的标准是什么?我想找到Sub geo不存在的类。如果这是要求,则您的查询将返回正确答案。然后使用原始示例,如果要查找不存在“te”的a的值,则要返回3和4,而不是1、2、3和4,对吗?事实上,你说你想返回1和2是令人困惑的,因为这只是一个简单的搜索te存在的地方。Class Sub 1 eng 1 Phy 1 chem 2 eng 2 chem 2 Phy 3 eng 3 his 3 geo我想找到Sub geo不存在的类。希望这是有意义的。