【问题标题】:Parenthese use with and/or clause括号与和/或子句一起使用
【发布时间】:2022-11-16 04:57:42
【问题描述】:

我想做一个 sql 查询而不是返回两个城市之间的距离。

SELECT c1.name, c2.name, d.distance
  FROM cities_distance d, city c1, city c2
  WHERE c1.id = d.id_cityStart
  AND c1.id = c2.id
  AND (c1.name = 'paris'
  AND c2.name = 'berlin')
  or (c1.name = 'berlin'
  AND c2.name = 'paris');

此查询返回巴黎或柏林注册的所有行。但在我的数据库中,我只有 1 行与“Paris-Berlin”匹配

我的数据库(cities_distance):

-----------------------------------
| id | city1  | city2  | distance |
| 1  | berlin | paris  | 1055     |
| 2  | rome   | berlin | 1500     |
-----------------------------------

【问题讨论】:

    标签: sql


    【解决方案1】:

    尝试这个:

    SELECT 
        c1.name, 
        c2.name, 
        d.distance
    FROM cities_distance d, city c1, city c2
    WHERE 
      c1.id = d.id_cityStart
      AND c1.id = c2.id
      AND (
        (c1.name = 'paris'
          AND c2.name = 'berlin')
        OR 
        (c1.name = 'berlin'
          AND c2.name = 'paris')
        );
    

    另外,尝试在没有 WHERE 子句的情况下运行它以确保数据集看起来正确。我不确定 d、c1 和 c2 是否是表,您没有加入它们。

    【讨论】:

      猜你喜欢
      • 2013-08-16
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 2011-08-23
      • 2012-10-21
      相关资源
      最近更新 更多