需要 max(id) 按位置但始终为每个位置获取相同的值
Need max(id) by location but always getting the same value for each location
我是 运行 sqlserver 中的一个查询,我需要按位置分类的最新 ID 该位置在不同的 table 但我可以加入该 ID。问题是值总是相同的,而不是每个位置。这是我的查询:
SELECT DISTINCT
(select max(id) from t
where p.partname = 'ibiza')locid,
p.partitionkey,
t.partitionkey,
p.partdesc,
p.partname
FROM
t1 t1,
t t
WHERE
t.partitionkey = t1.partitionkey
GROUP BY
t.id,
p.partitionkey,
p.partname,
p.partdesc,
t.partitionkey;
除了你的id问题还有很多问题:
- 当你已经在使用 group by 时,Distinct 就没用了。
- 在实际使用 "join" 关键字时,联接更易于阅读(在我看来)
- "p" 没有连接(我想这就是为什么你混淆了 group by 和 distinct - 如果没有结构我无法解决这个问题)
- 可以删除按 t.id 分组,因为它已由 "max" 函数聚合
然而,实际问题是,您总是选择最后一个 ID 作为列(对于每一行,它都选择相同的值),这就是为什么它总是相同的 - 没有对实际值的引用行。
这样会更好(至少我猜 - 没有 table 结构):
SELECT max(t.id) as locid, p.partitionkey, t.partitionkey, p.partdesc, p.partname
FROM t join p
on t.partitionkey = p.partitionkey
where p.partname = 'ibiza'
GROUP BY p.partitionkey, p.partname, p.partdesc, t.partitionkey
编辑:
现在我想我明白了,没有t1!应该是p?
再次提醒,请使用table个名字!
我是 运行 sqlserver 中的一个查询,我需要按位置分类的最新 ID 该位置在不同的 table 但我可以加入该 ID。问题是值总是相同的,而不是每个位置。这是我的查询:
SELECT DISTINCT
(select max(id) from t
where p.partname = 'ibiza')locid,
p.partitionkey,
t.partitionkey,
p.partdesc,
p.partname
FROM
t1 t1,
t t
WHERE
t.partitionkey = t1.partitionkey
GROUP BY
t.id,
p.partitionkey,
p.partname,
p.partdesc,
t.partitionkey;
除了你的id问题还有很多问题:
- 当你已经在使用 group by 时,Distinct 就没用了。
- 在实际使用 "join" 关键字时,联接更易于阅读(在我看来)
- "p" 没有连接(我想这就是为什么你混淆了 group by 和 distinct - 如果没有结构我无法解决这个问题)
- 可以删除按 t.id 分组,因为它已由 "max" 函数聚合
然而,实际问题是,您总是选择最后一个 ID 作为列(对于每一行,它都选择相同的值),这就是为什么它总是相同的 - 没有对实际值的引用行。
这样会更好(至少我猜 - 没有 table 结构):
SELECT max(t.id) as locid, p.partitionkey, t.partitionkey, p.partdesc, p.partname
FROM t join p
on t.partitionkey = p.partitionkey
where p.partname = 'ibiza'
GROUP BY p.partitionkey, p.partname, p.partdesc, t.partitionkey
编辑:
现在我想我明白了,没有t1!应该是p?
再次提醒,请使用table个名字!