Mysql:在Select中查询

时间:2015-12-05 05:30:36

标签: mysql sql

我有3个表result ,person and person_detail

结果有4列 id, teacher (fk from person) , student(fk from person), percent

人有很多专栏 id, address....etc.

person_detail有3列 id, name, person(fk for person)

我想要的结果如下:

teacher.name, student.name, percent

为此我尝试了这个查询:

select 
(select pd.name from Person_detail pd where pd.person=r.teacher) as Madam,
(select pd.name from Person_detail pd where pd.person=r.student) as Student,
and r.percent from Result r;

但是这会让我异常,因为子查询返回的行数超过1行,而我的一些朋友查询浏览器结果就是消息“ok”。

请有人能为我提供解决方案吗?

提前致谢,

2 个答案:

答案 0 :(得分:2)

您的子查询必须返回唯一的行,在您的查询中,此select pd.name from Person_detail pd where pd.person=r.teacher或此select pd.name from Person_detail pd where pd.person=r.student会返回多行。

因此,如果结果多行,您将获得上述错误。如果您想获得独特的结果,那么改善您的位置条件或使用Top(1)获得唯一的行(不推荐)。

您可以在不使用This

等子查询的情况下编写上述查询

答案 1 :(得分:2)

你需要在结果和person_details的两个实例之间使用join(一个用于学生,一个用于教师):

char *a = nullptr;
printf("%s", (a == nullptr) ? "NULL" : a);