SQL选择并显示至少包含一个值的组中的所有值

SQL选择并显示至少包含一个值的组中的所有值,sql,Sql,也许有人已经回答了这个问题,但我会在这里尝试。 假设我有三个专栏: **NAME** **TEST SCORE** **DATE** Chloé 67 Jan 8th Dennis 98 Jan 8th Zakary 45 Jan 8th Chloé 75 July 1st Dennis

也许有人已经回答了这个问题,但我会在这里尝试。 假设我有三个专栏:

 **NAME**    **TEST SCORE**   **DATE**
  Chloé          67             Jan 8th 
  Dennis         98             Jan 8th
  Zakary         45             Jan 8th 
  Chloé          75             July 1st 
  Dennis         91             July 1st 
  Zakary         76             July 1st 
我不仅想知道学生的名字,还想知道至少有一个成绩低于50%的学生的所有考试结果和日期,以便得到如下信息:

 Zakary 45 Jan8th
 Zakary 76 July1st 
我可以点什么菜?我已经试过了,但它似乎不适用于存在:

select t.* from tablename t
where exists (
  select 1 from tablename
  where name = t.name and score < 50
)
或:


我不知道您正在使用哪个数据库,但您应该尝试以下语句:

SELECT NAME, TEST_SCORE, DATE
  FROM STUDENTS
 WHERE NAME IN 
    (SELECT DISTINCT NAME FROM STUDENTS WHERE TEST_SCORE < 50)
希望能有帮助。 享受吧

使用join


真的是76分吗?另外,切换到正确的日期数据类型。
SELECT NAME, TEST_SCORE, DATE
  FROM STUDENTS
 WHERE NAME IN 
    (SELECT DISTINCT NAME FROM STUDENTS WHERE TEST_SCORE < 50)
select a.*
from tablename a
join (select distinct name from tablename where score<50) b on a.name=b.name