【问题标题】:How to fix MySQL error "The used SELECT statements have a different number of columns"如何修复 MySQL 错误“使用的 SELECT 语句具有不同的列数”
【发布时间】:2015-04-16 22:27:50
【问题描述】:

下面的页面显示了这个:

使用的 SELECT 语句的列数不同

发生了什么,如果可能,我该如何解决?

test.php

<?php 
include("mysqlconnect.php");
$sql = "SELECT * FROM login
INNER JOIN perguntador ON perguntador.autor_id = login.id
UNION ALL
SELECT * FROM perguntador
INNER JOIN perguntadorrespostas
ON perguntadorrespostas.question_id = perguntador.question_id";
$result = mysqli_query($conexao, $sql) or die (mysqli_error($conexao));
$assoc = mysqli_fetch_assoc($result);
?>

这段代码涉及到表:login(用户)、questions(加入登录表以访问 user_id)和 Comments(加入日志表以获得评论的用户名,并加入表 questions 以了解哪个问题用户发表了您的评论)。

【问题讨论】:

  • 基本上,您使用SELECT * 选择表中的所有列,您还使用UNION,当使用union 时,两个选择必须具有确切的列数,或者你得到这个非常描述性的错误
  • 在每种情况下将您的 * 换成逗号分隔的列列表 - 只是您需要的列。
  • 我会尽量等我一下,谢谢! (谷歌翻译)
  • 我不太明白你最近的问题编辑。基本上,例如,如果您在 UNION 之前有 6 列,那么您必须在 UNION 之后也有 6 列。如果列数不同,则会出现此错误。
  • 错误字段列表中的“user_id”列不明确(这解决了吗?=perguntador.autor_id 而不是autor_id)

标签: php mysqli


【解决方案1】:

您正在尝试在具有不同列数的两个表之间创建一个 UNION。可能需要使它们统一。或者将虚拟选择添加到缺少列的表中。

【讨论】:

    猜你喜欢
    • 2015-01-21
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多