我最近查找了一个查询,该查询在连续数字的表中返回了未使用的数字。 (有些可能会被删除并重新使用。)
它向我显示结果pnr_from
到pnr_to
个数字。现在我想添加一个“多少”coloumn。
是否可以使用其他两个别名添加此coloumn? (见注释行)
SELECT (
SELECT COALESCE(MAX(pnr)+1,1)
FROM pord
WHERE pnr < p.pnr
) AS pnr_from,
p.pnr - 1 AS pnr_to
-- (pnr_to - pnr_from) AS how_many <-------- ERROR: coloumn "pnr_to" doesn't exist
FROM pord p
WHERE p.pnr != 1 AND NOT EXISTS (
SELECT 1
FROM pord p2
WHERE p2.pnr = p.pnr - 1
)
AND pnr > 300 AND pnr < 600
ORDER BY von
我是否必须在第一个SELECT子句中将完整查询添加为子选择,还是有其他方式?
答案 0 :(得分:1)
制作子查询:
SELECT pnr_from, pnr_to, pnr_to - pnr_from AS how_many
FROM (
SELECT (
SELECT COALESCE(MAX(pnr)+1,1)
FROM pord
WHERE pnr < p.pnr
) AS pnr_from,
p.pnr - 1 AS pnr_to,
von
FROM pord p
WHERE p.pnr != 1 AND NOT EXISTS (
SELECT 1
FROM pord p2
WHERE p2.pnr = p.pnr - 1
)
AND pnr > 300 AND pnr < 600
) t
ORDER BY von
请注意您必须选择要订购的列,以便外部查询可以看到它。