列计数与第1行的值计数不匹配

r8xiu3jd  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(472)

我试着做一个查询,在这个查询中,试图记录每个赛季其他球员在同一个赛季获得的平均值,当进行查询时,它会向我发送这个错误,我正在使用mysql,这是我的查询和我的板

CREATE TABLE jugadores (
  codigo int NOT NULL,
  Nombre varchar(30) DEFAULT NULL,
  Procedencia varchar(20) DEFAULT NULL,
  Altura varchar(4) DEFAULT NULL,
  Peso int DEFAULT NULL,
  Posicion varchar(5) DEFAULT NULL,
  Nombre_equipo varchar(20) DEFAULT NULL,
  PRIMARY KEY (codigo),
  FOREIGN KEY (Nombre_equipo) References equipos(Nombre)
)engine=innodb;

CREATE TABLE equipos (
  Nombre varchar(20) NOT NULL,
  Ciudad varchar(20) DEFAULT NULL,
  Conferencia varchar(4) DEFAULT NULL,
  Division varchar(9) DEFAULT NULL,
  PRIMARY KEY (Nombre)
)engine=innodb;

CREATE TABLE jugador (
  codigo int NOT NULL,
  Nombre varchar(30) DEFAULT NULL,
  Procedencia varchar(20) DEFAULT NULL,
  Altura varchar(4) DEFAULT NULL,
  Peso int DEFAULT NULL,
  Posicion varchar(5) DEFAULT NULL,
  PRIMARY KEY (codigo)
)engine=innodb;

CREATE TABLE IF NOT EXISTS Temporada (
  idTemporada INT(11) NOT NULL,
  Nombre VARCHAR(30) NOT NULL,
  FechaInicio DATETIME NOT NULL,
  FechaFin DATETIME NOT NULL,
  PRIMARY KEY (idTemporada))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS Temporada_Equipo_Jugador (
  Id INT(11) NOT NULL,
   Nombre_equipo varchar(20) DEFAULT NULL,
  jugador_codigo INT(11) NOT NULL,
  Temporada_idTemporada INT(11) NOT NULL,
   PRIMARY KEY (Id),
  FOREIGN KEY (Nombre_equipo) References equipos(Nombre),
 foreign key (jugador_codigo) references jugador(codigo),
 foreign key (Temporada_idTemporada) references Temporada(idTemporada));

insert into temporada values (( 
    select AVG(a.estadisticas) 
    from estadisticas a, jugador b 
    where a.nombre = b.codigo 
    group by b.id_jugador
));

这就是错误 column count doesn't match value count at row 1

qf9go6mv

qf9go6mv1#

欢迎使用堆栈溢出。我在数据库代码中看到了一些需要解决的问题。
第一:回答你的问题。当你 INSERT 一行到一个表中,您必须为mysql提供一种方法来赋值,或者 NULL 值的值。你的 Temporada 表包含四列,它们都是声明的 NOT NULL 没有任何默认值。这意味着mysql不能接受您的 INSERT 除非您为所有列提供值,否则说明。
你的 idTemporada 列应该这样声明,以便mysql为每一行提供一个唯一的值:

idTemporada INT(11) NOT NULL AUTO_INCREMENT,

然后应该使用类似这样的insert语句,其中提供一个数字和两个日期/时间值。

insert into temporada 
          (Nombre,        FechaInicio, FechaFin)
   select AVG(something), start_date,  end_date
     from something

恐怕我对您的数据理解不够,无法告诉您从何处获取这些日期/时间值。
第二:你的 Nombre 接收一个数字,一个 AVG() . 因此,它应该被声明为一个数字,一个 DOUBLE ,不是 VARCHAR(30) .

Nombre DOUBLE NOT NULL,

第三,你的其他table也需要 AUTO_INCREMENT 在他们的 id 价值观。
请考虑我的意见,然后在你的代码工作,并问另一个问题,如果你仍然需要帮助。

相关问题