2015-10-08 40 views
0

我有一個SQL查詢出外這 -如何找出列中具有最大數字的行?

select * from (SELECT parent.item_name as name, parent.lft as lft 
FROM item_tree AS item, 
    item_tree AS parent 
WHERE item.lft > parent.lft AND item.rgt < parent.rgt 
    AND item.item_id = 6) 
     as ABC 

這將返回一個表 -

name | lft 

A  |  1 
B  |  2 
C  |  3 

但是,我需要C的值,因爲它有最大LFT值。 所以,我修改了代碼如下 -

select * from (SELECT parent.item_name as name, parent.lft as lft 
FROM item_tree AS item, 
    item_tree AS parent 
WHERE item.lft > parent.lft AND item.rgt < parent.rgt 
    AND item.item_id = 6) 
     as ABC 
    having ABC.lft = MAX(ABC.lft) 

現在,這個查詢無返回值。 這段代碼有什麼問題?

在此先感謝!

+0

請問,這是爲什麼downvoted?這是否表明我沒有做足夠的RnD? –

回答

1

嘗試此查詢

SELECT name, lft 
    from (SELECT parent.item_name as name, parent.lft as lft 
    FROM item_tree AS item, 
     item_tree AS parent 
    WHERE item.lft > parent.lft AND item.rgt < parent.rgt 
     AND item.item_id = 6) 
      as ABC 
    ORDER BY lft DESC 
    LIMIT 1 
+1

MySQL,而不是SQL Server。 「TOP」關鍵字在MySQL中不可用。 – Pred

+0

謝謝,我修好了:) –

+0

非常感謝!這是工作.. :) –

0

MAX是agregate函數,沒有GROUP BY就無法工作。

試試這個:

select * from (SELECT parent.item_name as name, parent.lft as lft 
FROM item_tree AS item, 
    item_tree AS parent 
WHERE item.lft > parent.lft AND item.rgt < parent.rgt 
    AND item.item_id = 6) 
     as ABC 
    order by ABC.lft desc limit 1 
相關問題