2011-05-14 37 views
3

由於數據庫中選擇最大號.....從電流id的MySQL

ID  Name  item_order  Manager 
1  ted  2    N 
2  bob  5    N 
3  tony  1    Y 
4  fred  3    N 
5  william 4    N 
6  george 6    Y 
7  cade  8    N 
8  matt  7    N 

我希望能夠選擇管理者當前非經理姓名之前id來。因此,例如鮑勃結果將是託尼或3

我可以計算出如何與兩個請求

SELECT MAX(item_order) AS parent 
FROM tablename WHERE item_order < 5 && Manager = 'Y' 

從我將使由item_order另一個選擇結果做到這一點。有一種方法可以在一個選擇中完成這一切嗎?

+0

將ü請解釋清楚?確切的'ID'和'item_order'之間的關係?編寫你想要的輸出 – diEcho 2011-05-14 11:44:40

回答

0
SELECT * FROM tablename 
WHERE Manager = 'Y' 
AND item_order = (SELECT MAX(item_order) AS parent 
        FROM tablename 
        WHERE item_order < 5 
        AND Manager = 'Y') AS t 
0
SELECT 
    n.*, 
    ManagerName = m.Name 
FROM tablename n 
    LEFT JOIN tablename m ON m.Manager = 'Y' AND n.item_order > m.item_order 
    LEFT JOIN tablename m2 ON m2.Manager = 'Y' 
    AND m2.item_order < n.item_order AND m2.item_order > m.Item_order 
WHERE n.Manager = 'N' 
    AND m2.ID IS NULL 

這會給你所有非管理人員的名單連同那些直接在它們前面經理的姓名(基於item_order)。

如果你只想返回一行特定非經理,增加一個條件是這樣的:

AND n.Name = 'bob'