首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL简单嵌套Select语句

问MySQL简单嵌套Select语句
EN

Stack Overflow用户
提问于 2012-02-29 00:07:18
回答 2查看 194关注 0票数 1

我有一个表reports,其中包含所有信息和只有报告ID和ID的已读报告(报告所有者的ID)

我正在尝试执行这个语句(如果有更好的语句,请纠正我),这样它就可以从与ID 1匹配的已读报告中获取所有报告ID,并从报告中挑选出所有详细信息。(报告和已读报告的报告ID相同)

但是这条语句没有返回任何行:

代码语言:javascript
复制
SELECT a.* 
 FROM `Reports` AS a, 
      (SELECT `Report ID` FROM `Read Reports` WHERE `Id` = 1) AS b
      WHERE a.`Report ID` = b.`Report ID`;

它有什么问题/我如何改进它?

谢谢,

编辑:我的错,它工作得很好!Id %1没有报告。合上这个。:L

EDIT2:如果你有改进,还是发帖吧:P

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-29 00:09:28

试试这个:

代码语言:javascript
复制
SELECT a.*, (SELECT `Report ID` FROM `Read Reports` WHERE `Id` = 1) AS b_report_id
FROM `Reports` AS a
HAVING a.`Report ID` = b_report_id;
票数 2
EN

Stack Overflow用户

发布于 2012-02-29 00:34:20

您的查询似乎没有任何问题,它应该返回记录,除非没有匹配的记录。但是如果您说确实存在匹配的记录,我建议您重新阅读您的查询,以确认您使用了正确的列名,即没有将"Id“替换为"Report ID"?

你能在你的帖子中给出你的数据的快照吗?

顺便说一下,下面的查询应该更好,因为它不涉及派生表:

代码语言:javascript
复制
SELECT `a`.*
FROM `Reports` AS `a`
INNER JOIN `Read Reports` AS `b` ON `a`.`Report ID` = `b`.`Report ID`
WHERE `b`.`Id` = 1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9485434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档