基于OR子句的SQL计算列
如果我有以下疑问:基于OR子句的SQL计算列,sql,postgresql,Sql,Postgresql,如果我有以下疑问: SELECT * FROM Flights WHERE Flights.From='Rome' OR Flights.To='London'; 是否有任何方法可以添加一个计算列(如matched)来标记匹配的字段 | number | from | to | matched | |--------|----------|--------|---------| | 1 | Rome | Munich | "from" | | 2
SELECT *
FROM Flights
WHERE Flights.From='Rome' OR Flights.To='London';
是否有任何方法可以添加一个计算列(如matched
)来标记匹配的字段
| number | from | to | matched |
|--------|----------|--------|---------|
| 1 | Rome | Munich | "from" |
| 2 | New York | London | "to" |
| 3 | Berlin | London | "to" |
您可以创建一个CASE语句来模拟WHERE语句的逻辑
SELECT *,
CASE
WHEN Flights.From IN ('Rome','London','etc.')
AND Flights.To IN ('Rome','London','etc.') THEN Flights.From || ', ' || Flights.To
WHEN Flights.From IN ('Rome','London','etc.') THEN Flights.From
WHEN Flights.To IN ('Rome','London','etc.') THEN Flights.To
END as MatchedValue
,CASE
WHEN Flights.From IN ('Rome','London','etc.')
AND Flights.To IN ('Rome','London','etc.') THEN 'Both'
WHEN Flights.From IN ('Rome','London','etc.') THEN 'From'
WHEN Flights.To IN ('Rome','London','etc.') THEN 'To'
END as MatchedDirection
FROM Flights
WHERE Flights.From='Rome' OR Flights.To='London'
当使用case语句时,满足的第一个When条件将是答案,因此,如果两个条件都满足,并且您希望看到第一个When条件必须寻找这种可能性。数据库是什么?@randomInstanceFlivingThing postgresql。谢谢。我还可以得到匹配的值吗?这里是
罗马
还是伦敦
?我正在询问使用运算符中的的查询。我需要用匹配的值填充计算列。我根据您的注释为您更新了答案,并提供了其他示例。谢谢你,先生。
SELECT *,
CASE
WHEN Flights.From='Rome' THEN 'From'
WHEN Flights.To='London' THEN 'To'
END as matched
FROM Flights
WHERE Flights.From='Rome' OR Flights.To='London'
SELECT *,
CASE
WHEN Flights.From IN ('Rome','London','etc.')
AND Flights.To IN ('Rome','London','etc.') THEN Flights.From || ', ' || Flights.To
WHEN Flights.From IN ('Rome','London','etc.') THEN Flights.From
WHEN Flights.To IN ('Rome','London','etc.') THEN Flights.To
END as MatchedValue
,CASE
WHEN Flights.From IN ('Rome','London','etc.')
AND Flights.To IN ('Rome','London','etc.') THEN 'Both'
WHEN Flights.From IN ('Rome','London','etc.') THEN 'From'
WHEN Flights.To IN ('Rome','London','etc.') THEN 'To'
END as MatchedDirection
FROM Flights
WHERE Flights.From='Rome' OR Flights.To='London'