T_subject表是这样的
id userId subject result
1  小名   语文    及格
2  小名   数学    及格
3  小红   语文   不及格
4  小红   数学    及格
5  小白   语文    不及格
6  小白   数学    不及格
7  小黑    语文    不及格 
8  小黑    数学    及格该如何写sql语句,把语文数学都不及格的人不输出。  只输出这样的:
id userId subject result
1  小名   语文    及格
2  小名   数学    及格
3  小红   语文   不及格
4  小红   数学    及格
7  小黑    语文    不及格 
8  小黑    数学    及格语文数学都不及格的小白就没显示出来了- -

解决方案 »

  1.   

    select * from T_subject where  (subject='语文' and  result='及格') or (subject='数学' and  result='及格')
      

  2.   

    POSTGRESQL例子:
    create type ytt as enum('及格','不及格');
    create table score(id integer, userid varchar(10), subject varchar(10), result ytt);insert into score values
    (1,'小名','语文','及格'),
    (2,'小名','数学','及格'),
    (3,'小红','语文','不及格'),
    (4,'小红','数学','及格'),
    (5,'小白','语文','不及格'),
    (6,'小白','数学','不及格'),
    (7,'小黑','语文','不及格'),
    (8,'小黑','数学','及格');select a.* from score as a,
    (
    select userid,sum(case when subject = '语文' and result = '不及格' then 1 when subject = '数学' and result = '不及格' then 1 else 0 end) as total
    from score group by userid
    ) as b
    where a.userid = b.userid and b.total < 2;结果:
    1;"小名";"语文";"及格"
    2;"小名";"数学";"及格"
    3;"小红";"语文";"不及格"
    4;"小红";"数学";"及格"
    7;"小黑";"语文";"不及格"
    8;"小黑";"数学";"及格"
      

  3.   

    错在哪里了?请说下  我觉得正确
    subject='语文' and  result='及格'  这个是语文及格
    (subject='数学' and  result='及格') 这个是数学及格你要的不是数学语文有一个及格的吗?
      

  4.   

    select a.* from test a, 
    (select userid from test where(subject="语文" and  result="及格")
    OR (subject="数学" and  result="及格") group by userid) b
    where a.userid = b.userid;