我尝试在 Sybase ASE 12 上使用建议的查询,但它抱怨语法错误。
SELECT
item,
( SELECT TOP 1 tags.tag
FROM #tags tags
LEFT JOIN t o
ON tags.tag = o.tag
AND o.item_id = n.item_id
WHERE o.tag IS NULL
ORDER BY tags.tag
) 'tag',
value
FROM
t_new n
错误:Incorrect syntax near the keyword 'top'.
但是,当我将 ( TOP 1 tag
... ORDER BY tag
) 替换为 MAX() 时,相同的查询仍然有效:
SELECT
item,
( SELECT max(tags.tag)
FROM #tags tags
LEFT JOIN t o
ON tags.tag = o.tag
AND o.item_id = n.item_id
WHERE o.tag IS NULL
-- ORDER BY tags.tag
) 'tag',
value
FROM
t_new n
为什么在 Sybase 的相关子查询中使用 (
TOP 1 tag
... ) 会出现问题?ORDER BY tag
对不使用 min()/max() 的原始查询是否有任何修复?