mysql - 连接两个缩进选择查询以获得不同列中的不同行

标签 mysql sql select join

我的选择查询总是返回一个包含一列但多行的表。 我现在想要修改查询以将其中包含完全相同数据的列附加到表中,然后将第一行限制为 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/

相关文章:

Java/MySQL 调度程序,网络应用程序和独立应用程序的提醒

mysql - 加密数据库

php - 尝试获取模型 codeigniter 中非对象的属性

mysql - sql 日期比较仅在年份为第一时才有效

php - SQL 查询,汇总某一特定项之前和之后的条目

R 根据两列选择最高计数单元格

Mysql group by 计数有不同的逻辑

mysql - 用于存储用户配置文件的更好数据模型是什么?

sql - 在 Entity Framework 中的 SQL View 上使用外键

sql - Go sql从扫描返回多行