php - SQL SELECT 仅具有来自两个不同表的列的 MAX 值的行

标签 php mysql sql database

我的两张 table 设置如下:

表1

+------+---------+--------------------------------------+
| id   | tail    | content                              |
+------+---------+--------------------------------------+
| 1    | abc     | ...                                  |
| 2    | def     | ...                                  |
| 3    | ghi     | ...                                  |
| 4    | def     | ...                                  |
| 5    | jkl     | ...                                  |
+------+-------+----------------------------------------+

表2

+------+--------+---------------------------------------+
| id   | tailID | value   |  others                     |
+------+--------+---------------------------------------+
| 1    | 2      | 412     |                             |
| 2    | 3      | 215     |                             |
| 1    | 2      | 571     |                             |
| 1    | 4      | 123     |                             |
+------+--------+---------------------------------------+

我喜欢从这两个表中获取一行中匹配的 tail = tailID 的所有列,但不是具有相同尾部的重复行。

对于重复的尾部,只需要获取相同尾部的单行最大值。

我正在使用

SELECT table1.tail, table2.other_column 
FROM table1 
INNER JOIN table2 
on table1.id = table2.tailID 
WHERE table1.some_coloum = "a sepecific string" 
ORDER BY table2.value

但它会返回许多相同尾部的副本。

我只需要为具有表 2 的高值 VALUE 的重复 TAIL 设置单行。

最佳答案

DISTINCT 与 CROSS APPLY:

SELECT DISTINCT t1.tail,
                t2.other_column,
                t3.[value]
FROM table1 t1
CROSS APPLY (
    SELECT  tailid,
            MAX([value]) as [value]
    FROM table2
    WHERE tailid = t1.id
    GROUP BY tailid
    ) as t3
INNER JOIN table2 t2
    ON t2.tailid = t3.tailid AND t3.[value] = t2.[value]
WHERE t1.some_coloum = "a sepecific string" 

关于php - SQL SELECT 仅具有来自两个不同表的列的 MAX 值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783118/

相关文章:

php - 我可以关闭未命名的 mysql 连接吗?

php - 我们可以通过用 PHP 扩展它来在函数中注入(inject)更多行吗?

php - 超出内存大小?

mysql - Plesk 12 MYSQL 数据库 1,8GB 备份需要

mysql - 如何优化此内连接查询以减少查询时间

SQL Server 按从第一个到最后一个的顺序从记录中减去一个值

php - 在 PHP 中做语言文件的最有效方法是什么?

mysql - 如何多次打开/关闭mysql连接?

mysql - group_concat_max_len 值在重新启动时更改为默认值

MySQL 确定性迁移脚本