我有一个复杂的查询,结果是一个包含 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
在数据库中找不到它。
所以问题是:如何连接派生表?
2条答案
按热度按时间pinkon5k1#
如果没有其他方法区分行,则可以使用聚合来获取两个值:
在mysql 8+中,您可以使用cte:
vyu0f0g12#
不能将表(或子查询)的单个引用连接到自身;子查询必须重复。
例句:你甚至做不到
SELECT A.* FROM sometable AS A INNER JOIN A ...
这个A
之后,内部联接无效,除非实际有一个名为a的实表。您可以将子查询的结果插入到另一个表中,并使用该表;但它不能是真正的临时表,因为几乎在任何查询中,这些表都不能连接到它们自己或引用两次_引用两次,我的意思是joined,unioned,当它已经在from中被引用时用作“where-in”子查询。