Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL从具有子查询的多个表中选择数据(包括来自内部联接的数据)错误:1242_Mysql_Sql_Database_Subquery_Mysql Error 1242 - Fatal编程技术网

Mysql SQL从具有子查询的多个表中选择数据(包括来自内部联接的数据)错误:1242

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中的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.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