通过codeacademy
学习SQL。例子是航班表;
例如,假设每次增加航班时flight_id会增加,我们可以使用以下查询按运营商,航班ID和序列号查看航班:
SELECT carrier, id,
(SELECT COUNT(*)
FROM flights f
WHERE f.id < flights.id
AND f.carrier = flights.carrier) + 1 AS flight_sequence_number
FROM flights;
我不了解飞行后'f'的功能。 f.carrier = flights.carrier是什么意思? 如果有人可以提供一些很棒的光!
答案 0 :(得分:0)
提供表别名,因为随着查询的增长,您将失去跟踪。
SELECT f.carrier, f.id, (SELECT COUNT(*)
FROM flights fs
WHERE fs.id < f.id
AND fs.carrier = f.carrier) + 1 AS flight_sequence_number
FROM flights f;
答案 1 :(得分:0)
B
是一个表别名,用于区分内部和外部查询中对f
的引用。我通常会将flights
用于外部查询,将f
用于内部查询:
f2
作为一个注释,这是一种荒谬和老式的计算方法。 ANSI SQL支持一个简单的函数来执行此操作:
SELECT f.carrier, f.id,
(SELECT COUNT(*) + 1
FROM flights f2
WHERE f2.id < f.id AND f2.carrier = f.carrier
) AS flight_sequence_number
FROM flights f;