子查询中的两列(mysql)
有如下表格的:子查询中的两列(mysql),mysql,select,subquery,Mysql,Select,Subquery,有如下表格的: TB1 ID1 NAME --- ---- 1 Mark 2 Elis TB2 ID2 ID1 DATE VALUE --- --- ---------- ------ 10 1 2018-01-01 100,00 20 1 2019-01-01 101,00 30 2 2018-02-01 200,00 40 2 2019-02-01 201,00 我想要两个表的结果,分别是ID和NAME唯一、DATE降序及其值。这是我尝试过
TB1
ID1 NAME
--- ----
1 Mark
2 Elis
TB2
ID2 ID1 DATE VALUE
--- --- ---------- ------
10 1 2018-01-01 100,00
20 1 2019-01-01 101,00
30 2 2018-02-01 200,00
40 2 2019-02-01 201,00
我想要两个表的结果,分别是ID
和NAME
唯一、DATE
降序及其值。这是我尝试过的,但不起作用:
SELECT TB1.NAME,
(
SELECT
TB2.DATE,
TB2.VALUE
FROM
TB2
WHERE
TB1.ID1=TB2.ID1
ORDER BY
TB2.DATE DESC
LIMIT 1
)
AS M_DATE,M_VALUE
FROM
TB1
WHERE
TB1.ID1>0
我的预期结果是:
EXPECTED RESULT
===============
NAME M_DATE M_VALUE
---- ---------- -------
Mark 2019-01-01 101,00
Elis 2019-02-01 201,00
您可以使用以下选项:
SELECT TB1.NAME, TB2.`DATE`, TB2.VALUE
FROM TB1 INNER JOIN (
SELECT ID1, MAX(`DATE`) AS M_DATE
FROM TB2 GROUP BY ID1
) TB2_MAX ON TB1.ID1 = TB2_MAX.ID1
INNER JOIN TB2 ON TB2_MAX.ID1 = TB2.ID1 AND TB2_MAX.M_DATE = TB2.`DATE`
WHERE TB1.ID1 > 0
所以您希望在ID1列上连接TB1和TB2,但您希望TB2中的哪一行?基于最高值或最新日期?@verhie最高日期,但必须公开相应的值great!作品谢谢你,塞巴斯蒂安。