Mysql SQL从具有子查询的多个表中选择数据(包括来自内部联接的数据)错误:1242
我想显示表1中的ID(TID)和内部联接的结果。 以下语句无效 情况:两个表格:Mysql SQL从具有子查询的多个表中选择数据(包括来自内部联接的数据)错误:1242,mysql,sql,database,subquery,mysql-error-1242,Mysql,Sql,Database,Subquery,Mysql Error 1242,我想显示表1中的ID(TID)和内部联接的结果。 以下语句无效 情况:两个表格: 表1主键:TID,FK:表2\u PID 表2 PK:PID,名称 在其他数据中,我想显示表1中存储在表2中的每个PID的名称 SELECT T.TID ,(Select P.Name from mydb.Table2 P inner join mydb.Table1 T on P.PID=T.Table2_PID) FROM mydb.Tic
- 表1主键:TID,FK:表2\u PID
- 表2 PK:PID,名称
SELECT T.TID
,(Select P.Name
from mydb.Table2 P
inner join mydb.Table1 T
on P.PID=T.Table2_PID)
FROM mydb.Ticket T;
Result: Error Code 1242. Subquery returns more than 1 row
我知道结果返回的行不止一行,但我想显示表1中存储在表2中的每个PID的名称。那我怎么做呢
PS:我正在使用mySQL和mySQL Workbench v6.3,您不需要使用内部连接来获取ID的所有名称。您可以尝试使用默认连接来获得结果
select t2.pid, t2.name from mydb.Table2 t2, mydb.Table1 t1 where t1.pid = t2.pid;
希望这有帮助。您必须像这样使用join
select t1.TID,t2.Name from Table1 t1 left join Table2 t2 on t1.Table2_PID=t2.PID
感谢您的回复,但问题仍然存在。 这与加入无关 这是关于子查询并选择其中的多行。谢谢大家, 我在想一个解决复杂问题的办法。我用一个简单的where语句解决了这个问题
SELECT T.TID, P.Name
FROM mydb.table1 T, mydb.table2 P
WHERE P.PID=T.table2_PID;
您的第二条select语句属于FROM中的派生表。您的
票证
表与表2
或表1
的关系如何?是的,对不起,票证是表1