【发布时间】:2015-12-07 06:33:08
【问题描述】:
如果我有一个多查询,例如:
SELECT * FROM my_database.`table` AS one
WHERE one.some_field LIKE 'abc';
SELECT * FROM my_database.`table` AS two
JOIN one
ON one.id = two.relatedId;
是的。这些是相同的表,它们应该是。当然,它要复杂得多,但这个例子说明了重点。
然后我收到一个错误(使用 PHP 和 PDO),例如:
未找到基表或视图:1146 表“my_database.one”不存在
我可以通过这样做来规避这个错误:
CREATE TEMPORARY TABLE one AS
(SELECT * FROM table AS one);
CREATE TEMPORARY TABLE two AS
(SELECT * FROM table AS two
JOIN one
ON one.id = two.relatedId
);
SELECT * FROM one;
SELECT * FROM two;
DROP TEMPORARY TABLE one;
DROP TEMPORARY TABLE two;
我尝试在第一个查询和第二个查询之间使用 UNION,使其成为单个查询,但得到了同样的错误。而且我也不想使用 UNION。
是否有另一种不需要在此过程中显式创建临时表的方法?
注意:JOINing 子查询实际上是不可接受的,因为那时我必须编写相同的查询两次,一次用于选择它,一次用于加入它。
编辑:我想要两个查询的结果。第二个查询需要在第一个查询的结果集上加入。
【问题讨论】:
-
为什么不在
from子句中使用`my_database.table AS one`?
标签: mysql join multi-query