如何找出列中具有最大数字的行?
How to find out the row with max Number in a column?
我有一个 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
这个returns一个table -
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)
现在,这个查询returns没有价值。
这段代码有什么问题?
提前致谢!
MAX 是聚合函数,没有 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
试试这个查询
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
我有一个 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
这个returns一个table -
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)
现在,这个查询returns没有价值。 这段代码有什么问题?
提前致谢!
MAX 是聚合函数,没有 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
试试这个查询
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