基于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'