我有一个复杂的查询,该查询导致一个包含time列的表。总会有两行具有相同的time

mysql - 如何联接派生表-LMLPHP

结果还包含一个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/

10-12 02:50