我有一个复杂的查询,该查询导致一个包含time
列的表。总会有两行具有相同的time
:
结果还包含一个value
列。具有相同value
的两行的time
总是不同的。
现在,我想扩展查询以将具有相同time
的行连接在一起。所以我的想法是像这样连接派生表:
SELECT A.time, A.value AS valueA, B.value as valueB FROM
(
OLD_QUERY
) AS A INNER JOIN A AS B ON
A.time=B.time AND
A.value <> B.value;
但是,查询的
JOIN A AS B
部分不起作用。 A
无法识别为派生表。 MySQL正在数据库中搜索表A
,但找不到它。因此,问题是:如何连接派生表?
最佳答案
您不能将对表(或子查询)的单个引用与其自身连接;子查询必须重复。
例子:你甚至不能做SELECT A.* FROM sometable AS A INNER JOIN A ...
除非您实际上有一个称为A的实际表,否则INNER JOIN后的A
无效。
您可以将子查询的结果插入另一个表中,并使用该表。但它不能是真正的TEMPORARY表,因为几乎不能在任何查询中将它们联接起来或对其进行两次引用。 _通过引用两次,我的意思是联接,联合,在FROM中已被引用时用作“ WHERE IN”子查询。
关于mysql - 如何联接派生表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50843276/