MySQL基数违规错误

时间:2016-07-21 03:28:00

标签: mysql sql

我正在尝试创建一个SQL查询,其中User表与Athlete表连接。除此之外,我还想计算Athlete_Event_Run表和Athlete_Personal_Run表中的​​总条目数。当我在PHP上运行此SQL查询时,我收到SQLSTATE [21000]错误:

Uncaught exception 'PDOException' with message 'SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)' in /var/www/html/ibaleka/get_athlete_profile_extended.php:14

我已将SQL代码放在存储过程中,这就是我认为的样子:

  SELECT * FROM `User` 
  LEFT OUTER JOIN Athlete ON Athlete.UserID = `User`.UserID
  WHERE `User`.EmailAddress = emailAddress
  AND (SELECT Athlete_Event_Run.AthleteID, COUNT(*) AS TotalEventRun FROM Athlete_Event_Run WHERE Athlete_Event_Run.AthleteID = `User`.UserID GROUP BY Athlete_Event_Run.AthleteID)
  AND (SELECT Athlete_Personal_Run.AthleteID, COUNT(*) AS TotalPersonalRun FROM Athlete_Personal_Run WHERE Athlete_Personal_Run.AthleteID = `User`.UserID GROUP BY Athlete_Personal_Run.AthleteID);

谢谢:)

1 个答案:

答案 0 :(得分:1)

你在底层的内心疑问没有任何意义。你返回的列太多,2而不是1.它试图为你转换为逻辑布尔值,你完全混淆了它。

是否要解决

and (1)
and (false)

它有机会。但你不是,因为你有一个列加上一个聚合(乘以2个子查询)。即使其中一个也会让它窒息。你有两个。

从手册页Subquery Errors 错误1241:

  

如果有目的,您可以使用返回多个列的子查询   行比较。在其他情况下,子查询必须是标量   操作数。