Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何访问subselect中的外部列_Mysql_Sql - Fatal编程技术网

Mysql 如何访问subselect中的外部列

Mysql 如何访问subselect中的外部列,mysql,sql,Mysql,Sql,我正在尝试获取所有公司的列表,以及与该公司链接的相应联系人。为了论证起见,我假设每个公司只存在一个联系人。我尝试使用以下方法: SELECT companies.id as company_id, contacts.name, contacts.email FROM companies, (SELECT * FROM contacts WHERE companyId = company_id LIMIT 1) as contacts 但我得到了一个错误: 1054-where子句中的未知列“

我正在尝试获取所有公司的列表,以及与该公司链接的相应联系人。为了论证起见,我假设每个公司只存在一个联系人。我尝试使用以下方法:

SELECT companies.id as company_id, contacts.name, contacts.email
FROM  companies, (SELECT * FROM contacts WHERE companyId = company_id LIMIT 1) as contacts
但我得到了一个错误:

1054-where子句中的未知列“公司id” 我几乎尝试了列本身和表的各种别名,但整个上午都没有运气。有什么想法吗

谢谢

为什么不做:

SELECT cmp.id as company_id, 
      (SELECT name FROM contacts WHERE cmp.Id = company_id LIMIT 1)
FROM  companies cmp

如果联系人表中有电子邮件,则可以将其添加到代码中

 SELECT comp.id as company_id, 
  (SELECT name,email FROM contacts WHERE comp.Id = company_id LIMIT 1) FROM  companies comp
这里email是字段名,如果您对email值有不同的字段名,您可以更改它

这样做

    SELECT comp.id as company_id, SELECT name,email FROM contacts WHERE comp.Id = company_id LIMIT 1 FROM  companies comp

您是否尝试过使用完整的表名而不是别名?例如companys.id?是的,但我也犯了同样的错误。我有一种感觉,它可能只是一个错误的别名组合,但我一直在尝试一切!很抱歉我应该提到我想从联系记录中获得电子邮件地址。问题更新^I尝试过,但该位置的子选择只能包含一个值:#1241-操作数应包含1列