我的选择查询总是返回一个包含一列但多行的表。 我现在想要修改查询以将其中包含完全相同数据的列附加到表中,然后将第一行限制为 1,将第二行限制为 1,2 (我想获得某个结果的“Top X”,每个结果都在不同的列中。)
我当前的无效查询如下所示:
SELECT tag1, tag2 FROM
(
(SELECT tag1...) AS t1
JOIN
(SELECT tag2...) AS t2
);
不幸的是,连接的列在每行中包含相同的值:
Top1 Top2
1234 1234
4321 1234
6543 1234
8765 1234
结果应该是这样的:
Top1 Top2
1234 1234
4321 4321
6543 6543
8765 8765
这样我就可以选择 Top1 列中的第一个值和 Top2 列中的第二个值。因此最终结果应该是:
Top1 Top2
1234 4321
我怎样才能实现这一点,为什么我的查询不起作用?
最佳答案
当 Top1 是最后一个值时,您希望为 Top2 显示什么?
试试这个:(也进行编辑以获取 tag3)
SELECT tag1, tag2, tag3 FROM
(
(SELECT tag1...) AS t1
LEFT JOIN
(SELECT tag2...) AS t2
ON(t1.tag1 < t2.tag2)
LEFT JOIN (SELECT tag3...) AS t3
ON(t2.tag2 < t3.tag3)
) LIMIT(1);
这将为您提供 tag2 列中 tag1 的下一个值。当然,您不会经历两列具有相同值的步骤。
请注意,添加的左连接越多,执行时间就越慢。
关于mysql - 连接两个缩进选择查询以获得不同列中的不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634608/