【问题标题】:Mysql Error code: 1242 Subquery returns more than 1 rowMysql 错误代码:1242 子查询返回多于 1 行
【发布时间】:2016-04-07 19:44:02
【问题描述】:

一切似乎都运行良好,然后突然间我的前端出现了这个错误:

致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE[21000]:基数违规:1242 子查询返回更多 /var/www/html/system/home.php:78 中的多于 1 行 堆栈跟踪:#0 /var/www/html/system/home.php(78): PDOStatement->execute() #1 {main} 在第 78 行的 /var/www/html/system/home.php 中抛出

在 Workbench 下,我之前创建的每个 VIEW 都发出此错误:Mysql Error code: 1242 Subquery returns more than 1 row.

这是一个给出错误的代码示例。

SELECT 
    `teams`.`id` AS `id`,
    `teams`.`name` AS `team_name`,
    `teams_and_captains_view`.`captain` AS `captain`,
    IF((`teams`.`gender` = 'M'),
        'Male',
        'Female') AS `gender`,
    (SELECT 
            `categories`.`name`
        FROM
            `categories`
        WHERE
            (`categories`.`id` = `teams`.`category_id`)) AS `category`,
    `teams`.`category_id` AS `category_id`,
    `teams`.`slogan` AS `slogan`,
    `teams`.`location` AS `location`,
    `teams`.`description` AS `description`,
    `teams`.`phone` AS `phone`,
    `teams`.`email` AS `email`,
    `teams`.`tournament_id` AS `tournament_id`,
    (SELECT 
            COUNT(`players`.`id`)
        FROM
            `players`
        WHERE
            (`players`.`team_id` = `teams`.`id`)) AS `players`,
    `teams_and_captains_view`.`captain_id` AS `captain_id`
FROM
    (`teams`
    LEFT JOIN `teams_and_captains_view` ON ((`teams`.`id` = `teams_and_captains_view`.`id`)))

当我使用 LIMIT 时它似乎可以工作,但我不能使用 LIMIT。

提前谢谢你

【问题讨论】:

  • 您的categories 表可能包含具有相同id 的重复行。尝试删除重复项并将id 设为主键
  • 由于您使用子选择创建一个伪列,它必须只返回一个值——一列在一行中不能有多个值。如果你“不能”使用 LIMIT,那么你可能一开始就选择了错误的方法。 (哪个更适合,很难说,因为您的问题既不包括表结构、样本数据和预期输出,也不包括您在此处实际尝试实现的目标的解释。)
  • 我在这里是 FuzzyTree。查询看起来很好,所以它一定是描述的数据库不一致。

标签: php mysql database left-join cardinality


【解决方案1】:

当您的子查询返回时,将返回错误代码 1242 多于一行进行比较。

请检查您是否错误地插入了任何重复数据。

http://dev.mysql.com/doc/refman/5.7/en/subquery-errors.html

【讨论】:

  • 谢谢,“teams_and_captains_view”中的一个子查询返回了重复的结果。我对该视图进行了更改,现在一切正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
相关资源
最近更新 更多