Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何组合“MAX”和“JOIN”以获得正确的输出?_Mysql - Fatal编程技术网

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`