id1 id2 name
1 1 2 a
2 3 4 b
3 5 6 c
4 7 8 d
5 9 10 e
select id1, id2, name
from Emp3
where id2 in (select MAX(id2) from Emp3)
如何只打印最大数量?
答案 0 :(得分:0)
使用
select id2
from Emp3
where id2 in (select MAX(id2) from Emp3)
这将只打印10
如果您想要这两列中的最大值,请使用
SELECT
CASE
WHEN MAX(id1) >= MAX(id2) THEN MAX(id1)
WHEN MAX(id2) >= MAX(id1) THEN MAX(id2)
END AS MaxValue
FROM Emp3
答案 1 :(得分:0)
如果两个id列都已编制索引,请使用带UNION ALL
的派生表:
select max(id)
from
(
select max(id1) as id from Emp3
union all
select max(id2) from Emp3
)
如果未编入索引,请使用CASE
:
select max(case when id1 > id2 then id1
when id2 > id1 then id2
else coalesce(id1,id2) end)
from Emp3
此答案使用COALESCE
来处理NULLs
(如果有的话......)该表将只读一次。 (使用UNION解决方案,表将被读取两次,并且您不希望在没有任何索引的情况下执行此操作!)
旧答案:
我猜你想要id1 / id2值最高的行吗?
当没有其他具有更高id值的行时,返回一行:
select id1, id2, name
from Emp3 e1
where not exists (select 1 from Emp3 e2
where e2.id1 > e1.id1
or e2.id1 > e1.id2
or e2.id2 > e1.id1
or e2.id2 > e1.id2)
如果有平局,将返回两行。 (两行或多行具有相同的最高值。)
替代解决方案,使用TOP
,与ORDER BY
结合使用CASE
来查找每行较大的id值:
select TOP 1 id1, id2, name
from Emp3
order by case when id1 > id2 then id1 else id2 end desc
备选方案3,使用UNION ALL
查找最大ID的子查询:
select TOP 1 id1, id2, name
from Emp3
where (select max(case when id1 > id2 then id1 else id2 end) from Emp3) in (id1,id2)
答案 2 :(得分:0)
使用TOP
和ORDER BY
获取结果
SELECT TOP 1 ID2 FROM Emp3 ORDER BY ID2 DESC
答案 3 :(得分:0)
select max(id) from (
select max(id1) as id from Emp3
union
select max(id2) as id from Emp3
)
答案 4 :(得分:0)
DECLARE @T TABLE (ID1 INT ,ID2 INT ,NAME VARCHAR(80))
INSERT INTO @T VALUES (1,2,'NME1')
INSERT INTO @T VALUES (3,4,'NME2')
INSERT INTO @T VALUES (5,6,'NME3')
INSERT INTO @T VALUES (7,8,'NME4')
INSERT INTO @T VALUES (9,10,'NME5')
INSERT INTO @T VALUES (11,12,'NME6')
SELECT * FROM @T
SELECT MAX(ID1) ID FROM
(
SELECT ID1 FROM @T T1
UNION
SELECT ID2 FROM @T T2
)TT