Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
MS-SQL问题-在选择列表中只能指定一个表达式_Sql_Sql Server_Tsql - Fatal编程技术网

MS-SQL问题-在选择列表中只能指定一个表达式

MS-SQL问题-在选择列表中只能指定一个表达式,sql,sql-server,tsql,Sql,Sql Server,Tsql,我编写以下查询: select id, (select NameEn from [Campaign] where id=CampaignId) as CampaignName, createdDate, (select Name, IdNo, Email, MobileNo from [Members] where id=MemberId) from Transactions 出现错误: “如果子查询不是使用EXISTS引入的,则只能在选择列表中

我编写以下查询:

select 
   id, 
   (select NameEn from [Campaign] where id=CampaignId) as CampaignName,    
   createdDate, 
   (select Name, IdNo, Email, MobileNo from [Members] where id=MemberId) 
from 
   Transactions
出现错误:
“如果子查询不是使用EXISTS引入的,则只能在选择列表中指定一个表达式。”

如何重写SQL以使其正确?

您需要使用正确的(
内部
|
左侧
|…)连接语法

比如:

  select 
      t.id, 
      c.NameEn,
      t.createdDate,
      m.Name,
      m.IdNo,
      m.Email,
      m.MobileNo
  from
      [Transactions] t 
      inner join [Campaign] c on c.id = t.CampaignId
      inner join [Members] m on m.id = t.MemberId
另外,在您的原始代码中

  select NameEn from [Campaign] where id=CampaignId


对于
[Transactions]
的每一行,可能返回多行,这将是非法的。

此外,如果您不确定活动行或成员行是否存在,请将inner替换为left。
  select Name,IdNo,Email,MobileNo from [Members] where id=MemberId