mysql - 当我在另一个查询中嵌套一个查询时,我收到错误“SQL 错误 1241 操作数应包含 5 列”
问题描述
SELECT *
FROM AUTHOR
WHERE FLOOR(DATEDIFF(bDate,CURDATE())/365.25*-1) > 30 AND
(SELECT a.*
FROM AUTHOR a
WHERE (SELECT count(paperId) from AUTHOR_PAPER ap where ap.authorId = a.aEmail)) > 3
这两个查询都是独立工作的,我只想找出两个 where 子句
表
author
(aEmail*
,fName
,lName
,bDate
,city
)
reviewer
(rEmail*
,phoneNumber
,lName
,fName
,city
)
paper
(paperId*
,title
,abstract
,submissionDate
)
author_paper
(authorId*
,paperId*
,isContact
)
paper_review
(paperId*
,reviewerId*
,score
,reviewSubmissionDate
,reviewInvitationDate
)
* = (component of) PRIMARY KEY
我得到的错误是:17:05:14 SELECT * FROM AUTHOR WHERE FLOOR(DATEDIFF(bDate,CURDATE())/365.25 -1) > 30 AND (SELECT a. FROM AUTHOR a WHERE (SELECT count(*) from AUTHOR_PAPER ap其中 ap.authorId = aEmail)) > 3 LIMIT 0, 1000 错误代码:1241。操作数应包含 5 列 0.000 秒
aEmail = authorId
解决方案
看起来您需要 30 岁以上且发表过 3 篇以上论文的作者。如果是这样,我会建议:
select *
from author a
where
bdate <= current_date - interval 31 year
and (select count(*) from author_paper ap where ap.authorid = a.email) > 3
推荐阅读
- javascript - 如何在新 div 中包装每三个唯一的子元素
- database - 如何模拟 ping 命令
- jmeter - 即使在生产中关闭了代码,我的 Jmeter 脚本也通过了
- repo - 回购初始化停止总是检查最新的回购
- docker - 运行 Docker 构建时出现未指定的错误 (0x80004005)
- heap-memory - 在 cloudwatch 中收集 JVM 指标,例如堆使用情况 GC 信息以获取 Fargate 服务
- sharepoint - 在 sharepoint 现代网站上嵌入最新的网络聊天
- typescript - 如何在异步方法中返回承诺?
- jquery - 在 wordpress upolad 媒体窗口上显示自定义消息?
- python - 如何将嵌套的 JSON 转换为 Pandas 数据框?