Mysql 如何组合“MAX”和“JOIN”以获得正确的输出?
我有选择输出:Mysql 如何组合“MAX”和“JOIN”以获得正确的输出?,mysql,Mysql,我有选择输出: SELECT t1.NO_PROJECT, t1.ID_ACTIVITY, t2.NO, t2.NAMA_ACTIVITY, t2.LEVEL_ACTIVITY FROM t1 INNER JOIN t2 ON t1.ID_ACTIVITY = t2.NO ORDER BY LEVEL_ACTIVITY DESC LIMIT 1 此select查询的结果是: NO_PROJECT ID_ACTIVITY NO NAMA_ACTIVITY LE
SELECT
t1.NO_PROJECT,
t1.ID_ACTIVITY,
t2.NO,
t2.NAMA_ACTIVITY,
t2.LEVEL_ACTIVITY
FROM t1
INNER JOIN t2
ON t1.ID_ACTIVITY = t2.NO
ORDER BY LEVEL_ACTIVITY DESC
LIMIT 1
此select查询的结果是:
NO_PROJECT ID_ACTIVITY NO NAMA_ACTIVITY LEVEL_ACTIVITY
PRJ-2017-544 2 2 03 DRTU 3
PRJ-2017-544 6 6 09 P.HARGA 9
PRJ-2017-544 7 7 08 HPS 8
我使用ORDER BY LEVEL_ACTIVITY DESC
和LIMIT 1
获得所需的输出。但是,如果我使用MAX(LEVEL\u ACTIVITY)
,我该怎么做呢
输出应该是(当我使用ORDER BY LEVEL_ACTIVITY DESC
和LIMIT 1
时):
我想知道在使用
MAX(LEVEL\u ACTIVITY)
时如何获得相同的输出。您可以加入子查询以获得MAX(LEVEL\u ACTIVITY)
如果您这样做,并且在t2
中有多行具有最高的级别活动
,它们都将出现在结果中。或者,如果t1
中有多行与最高级别的活动关联,则它们都将出现在结果中
如果您只需要一个结果,那么您原来的方法应该可以工作。当您使用
LIMIT 1
LIMIT 1
时,无法获得显示的3行,这意味着输出中应该只有1行。您是如何获得3行的?@Barmar我想获得基于级别\活动的最后一个活动。我不知道您如何从显示的查询中获得输出。如果使用LIMIT 1
,它将只输出一行,而不是3行。请参阅:在本查询中MAX
是否与LEVEL\u ACTIVITY
相同?
SELECT
t1.NO_PROJECT,
t1.ID_ACTIVITY,
t2.NO,
t2.NAMA_ACTIVITY,
t2.LEVEL_ACTIVITY,
(SELECT MAX(LEVEL_ACTIVITY) AS MAX FROM t2)
FROM t1
INNER JOIN t2 ON t1.ID_ACTIVITY = t2.NO
ORDER BY LEVEL_ACTIVITY DESC
LIMIT 1`
SELECT
t1.NO_PROJECT,
t1.ID_ACTIVITY,
t2.NO,
t2.NAMA_ACTIVITY,
t2.LEVEL_ACTIVITY
FROM t1
INNER JOIN t2
ON t1.ID_ACTIVITY = t2.NO
INNER JOIN (SELECT MAX(LEVEL_ACTIVITY) AS MAX_LA FROM t2) AS t3
ON t2.LEVEL_ACTIVITY = t3.MAX_LA
SELECT
t1.NO_PROJECT,
t1.ID_ACTIVITY,
t2.NO,
t2.NAMA_ACTIVITY,
t2.LEVEL_ACTIVITY,
(SELECT MAX(LEVEL_ACTIVITY) AS MAX FROM t2)
FROM t1
INNER JOIN t2 ON t1.ID_ACTIVITY = t2.NO
ORDER BY LEVEL_ACTIVITY DESC
LIMIT 1`