sql - Msg 116, Level 16, State 1, Line 2 当子查询没有用 EXISTS 引入时,选择列表中只能指定一个表达式
问题描述
当我尝试运行此代码时收到此错误消息
select *
from Folio_Guest
where FolioID = (
select *
from Folio
where ArrivalDate between '20190101' and '20210901'
)
解决方案
子查询最多需要返回一行和一列。也许你打算这样:
select fg.*
from Folio_Guest fg
where fg.FolioID in (select f.folioID
from Folio f
where ArrivalDate between '20190101' and '20210901'
);
重要的变化是:
- 子查询仅返回一列,即应与 匹配的一列
folioID
。 - 如果合适,比较使用
in
而不是=
匹配多行。
推荐阅读
- ios - iOS - MBProgressHUD bezelView 是透明的
- javascript - Laravel - Vue 和 Javascript 的问题
- c# - 刷新过期令牌 Web API
- node.js - heroku 上的节点 cron 作业,是否需要使用 heroku 调度程序?
- 3d - 合并相邻和共面的面
- outlook - 在 getMimeContent() 方法的情况下,您必须先加载或分配此属性,然后才能读取其值
- c# - 在 C# 中,当我单击第二种形式的按钮时,如何在第一种形式中打开第三种形式
- java - 没有为edittext显示键盘
- java - Java 文件正在从路径 /tmp/hsperfdata_*username*/ 中消失
- windows - 执行不打开cmd