使用与另一个表匹配的方式从一个表中选择数据

时间:2017-03-29 13:00:47

标签: mysql

我希望根据T2中的标准匹配显示T1中的所有字段,但我不希望显示T2中的任何内容。

所以当我查询

event = "Goal"
tableView.reloadData()

我收到错误(#1054 - 'where子句'中的未知列'exam.Level'),因为我没有在第1行中包含T2(考试)。

但是当我查询

SELECT * FROM Personal 
WHERE Personal.P_ID=Exam.P_ID
AND Exam.Level='B2'
AND Exam.Certification='Full'

我也获得了所有的Exam表数据。

如何返回所有T1(个人)数据?

我检查过以前的问题并发现:Select data (join?) from only one table using an id from another table,但答案仍会返回不需要的T2数据。

例如,

SELECT * FROM Personal, Exam 
WHERE Personal.P_ID=Exam.P_ID
AND Exam.Level='B2'
AND Exam.Certification='Full'

1 个答案:

答案 0 :(得分:2)

首先,不要在where子句中使用逗号分隔的表格;这是join的用途(更多关于此here

要解决您的问题,您应该更改选择

中的内容
SELECT  Personal.*
FROM    Personal
JOIN    Exam 
ON      Personal.P_ID=Exam.P_ID
WHERE   Exam.Level='B2'
AND Exam.Certification='Full'

这将显示所有Personal列,但您当然可以只选择

SELECT  Personal.column1, Personal.column2