0

我想显示来自 Table1 (TID) 的 ID 和内部连接的结果。以下语句不起作用。

情况:两张桌子:

  • 表 1 PK:TID,FK:Table2_PID
  • 表 2 PK:PID、名称

在其他数据中,我想显示存储在 Table2 中的 Table1 中每个 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 行,但我想显示存储在 Table2 中的 Table1 中每个 PID 的名称。那么关于我如何做到这一点的任何想法?

PS:我正在使用 mySQL 并使用 MySQL Workbench v6.3

4

4 回答 4

0

你必须像这样使用 join

select t1.TID,t2.Name from Table1 t1 left join Table2 t2 on t1.Table2_PID=t2.PID
于 2015-11-26T14:36:08.710 回答
0

您不需要使用内部连接来获取 ID 的所有名称。您可以尝试使用默认连接来实现结果。

select t2.pid, t2.name from mydb.Table2 t2, mydb.Table1 t1 where t1.pid = t2.pid;

希望这可以帮助。

于 2015-11-26T14:35:50.947 回答
0

感谢您的回复,但问题/问题仍然存在。这与加入无关。

它是关于子查询并在其中选择多行。

于 2015-11-27T07:44:21.450 回答
0

谢谢大家,我正在考虑一种复杂的解决方案。我使用一个简单的 where 语句解决了它。

SELECT T.TID, P.Name
FROM mydb.table1 T, mydb.table2 P
WHERE P.PID=T.table2_PID;
于 2015-11-27T11:53:28.883 回答