MySQL Simple Nested Select语句

时间:2012-02-28 16:07:18

标签: mysql select

我有一个表格报告,其中包含所有信息和阅读报告,这些报告只有报告ID和ID(报告所有者)

我正在尝试执行此声明(如果有更好的话,请更正我),以便从读取报告中获取与ID 1匹配的所有报告ID,并从报告中选择所有详细信息。 (报告ID与报告和阅读报告相同)

但是这句话让我没有任何行:

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

2 个答案:

答案 0 :(得分:2)

试试这个:

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;

答案 1 :(得分:1)

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

您可以在帖子中提供数据的快照吗?

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

SELECT `a`.*
FROM `Reports` AS `a`
INNER JOIN `Read Reports` AS `b` ON `a`.`Report ID` = `b`.`Report ID`
WHERE `b`.`Id` = 1;