模糊的`id`字段

Mic*_*les 4 mysql innodb

我有以下两个表:

system
- id
- systemName
- idOrganization

organization
- id
- officeSymbol
Run Code Online (Sandbox Code Playgroud)

我正在运行以下查询并收到一个id模糊的错误:

SELECT system.systemName, organization.officeSymbol
FROM system
LEFT JOIN (organization)
ON (system.idOrganization = organization.id)
Run Code Online (Sandbox Code Playgroud)

如您所见,我没有选择该id列.如果我放在system.id要选择的字段列表中,我将不再收到此错误.不幸的是,处理这些数据的方式我无法返回id- 我们不希望它显示给用户.

此外,如果我添加GROUP BY system.systemName我不再得到错误 - 但这似乎不是最佳解决方案.

注意:这LEFT JOIN是故意的,因为并非所有系统都将分配给组织.

SELECT VERSION()
--> 5.0.77-community-log

CREATE TABLE system (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `systemName` VARCHAR(45) DEFAULT NULL,
  `idOrganization` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_system_organization` (`idOrganization`),
  CONSTRAINT `fk_system_organization` 
    FOREIGN KEY (`idOrganization`) 
    REFERENCES `organization` (`id`) 
    ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE organization (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `officeSymbol` VARCHAR(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

Qua*_*noi 5

测试5.0.77:


SELECT  VERSION();

VERSION()
5.0.77


CREATE TABLE organization (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `officeSymbol` VARCHAR(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE system (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `systemName` VARCHAR(45) DEFAULT NULL,
  `idOrganization` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_system_organization` (`idOrganization`),
  CONSTRAINT `fk_system_organization`
    FOREIGN KEY (`idOrganization`)
    REFERENCES `organization` (`id`)
    ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT
INTO   organization
VALUES
        (1, 'Organization 1'),
        (2, 'Organization 2');
INSERT
INTO     system
VALUES  (1, 'System 1', 1),
        (2, 'System 2', 2);
SELECT  system.systemName, organization.officeSymbol
FROM    system
LEFT JOIN
        (organization)
ON      (system.idOrganization = organization.id);

systemName      officeSymbol
System 1        Organization 1
System 2        Organization 2

一切正常.

请注意,LEFT JOIN这里没用,因为你有一个FOREIGN KEYto organization,并且organization每个给定的总是会有一个system.

你在@Artem Barger帖子的评论中说:

我只选择这两个表之间共享的42个字段中的5个

表和/或查询中是否还有其他字段?

由于您有语法错误,因此每个逗号都可能很重要.