【问题标题】:Get multiple select from one table从一张表中获得多项选择
【发布时间】:2021-08-25 06:07:08
【问题描述】:

我有一个显示“Trafic”的表格,这个表格有每辆进出库姆省的车辆的车牌号、始发地和目的地。

id CarPelakNumber FromCity ToCity
0 00000 Kerman Qom
1 11111 Qom Tehran
2 22222 Ahvaz Qom
3 33333 Garmsar Qom
4 44444 Saveh Qom
5 55555 Karaj Qom
6 66666 Semnan Qom
7 77777 Qom Karaj
8 88888 Kerman Qom
9 99999 Kerman Qom
10 22222 Qom Tehran
11 33333 Qom Hamedan
12 66666 Qom Arak
13 88888 Qom Fars
14 99999 Qom Yasooj

下一个表格是“城市”,显示除库姆省以外的其他省份的名称。

id City
1 Tehran
2 Ahvaz
3 Garmsar
4 Saveh
5 Karaj
6 Semnan
7 Hamedan
8 Kerman
9 Arak
10 Fars
11 Yasooj

我想找出所有只进入库姆省而没有离开库姆省的汽车。 示例 SQL 代码:

    Select * from Trafic
       where FromCity in (select City from City) and
             ToCity='Qom' and
             ToCity not in (select City from City)
id CarPelakNumber FromCity ToCity
0 00000 Kerman Qom
4 44444 Saveh Qom
5 55555 Karaj Qom

我想找到所有刚刚离开库姆省但没有进入的汽车。 示例 SQL 代码为:

    Select * from Trafic
       where FromCity='Qom' and and
             FromCity not in (select City from City) and
             ToCity in (select City from City)
id CarPelakNumber FromCity ToCity
1 11111 Qom Tehran
7 77777 Qom Karaj

我想找出所有进出库姆省的汽车。 示例 SQL 代码为:

   WITH T1 AS
    (
        Select * from Traffic
            where FromCity in (select City from City) and
                  ToCity='Qom' 
    )
    , T2 as
    (
        Select * from Traffic
            where FromCity='Qom' and
                  ToCity in (select City from City)
    )
    select * from T1,T2
      where T1.CarPelakNumber=T2.CarPelakNumber 

但是上面的代码有问题,我没有给出我需要的输出,它给出了错误的答案。

id CarPelakNumber FromCity ToCity
2 22222 Ahvaz Qom
3 33333 Garmsar Qom
6 66666 Semnan Qom
8 88888 Kerman Qom
9 99999 Kerman Qom
10 22222 Qom Tehran
11 33333 Qom Hamedan
12 66666 Qom Arak
13 88888 Qom Fars
14 99999 Qom Yasooj

【问题讨论】:

  • 你想要的输出是什么?您能否在您的问题中添加此内容
  • 您能否提及您的数据库管理系统? Oracle SQL、MSSQL、PostgreSQL 等等。这使我们能够通过使用特定于数据库的函数为您提供更好的答案

标签: sql sql-server


【解决方案1】:

我想找到所有只进入而没有离开库姆的汽车 省。

Select * from Trafic where ToCity='Qom' and FromCity <> 'Qom';

我想找到刚离开库姆省但没有离开的所有汽车 输入它。

Select * from Trafic where FromCity='Qom' and ToCity <> 'Qom';

在上面的两个语句中,你真的只需要分别的第一个子句。似乎一辆车总是在FromCityToCity 中有Qom

我想找出所有进出库姆省的汽车。

Select * from Trafic where FromCity='Qom' and ToCity = 'Qom';

查看数据没有意义,但你说and - 所以你会这样做。

我知道这不是很有帮助,因为这不能解决您问题的根本问题。但我希望它能让你有机会更多地反思它。请随时改进您的问题。

更新:

看了你的问题,我意识到最后一句话可能是这样的:

Select * from Trafic where FromCity='Qom' union Select * from Trafic where ToCity = 'Qom';

【讨论】:

  • 嗨,很遗憾,您的代码没有完全显示我要求的内容,也没有显示在我的问题表格中。
  • 请尝试更新您的问题。我提到了你写的文字,它与问题中的“表格”并没有真正的关系。我的意思是I want to find all the cars that only entered and did not leave Qom province. - 我的感觉是你想让我们知道汽车是由第二列识别的 - 你能确认一下吗?
【解决方案2】:

我通过练习和重复找到了答案: 查找所有只进不出库姆省的汽车的SQL代码:

    ;WITH t AS
    (
        Select * from Trafic
                 where FromCity='Qom' and
                       ToCity in (select City from City)
    )
        SELECT *
           FROM Trafic
               where FromCity in (select City from City) and
                     ToCity='Qom' and
                     ToCity not in (select City from City) and
                     CarPelakNumber not in (select CarPelakNumber from t)

查找刚离开库姆省但没有进入的所有汽车的SQL代码:

  ;WITH t AS
    (
        Select * from Trafic
                 where FromCity in (select City from City) and
                       ToCity='Qom'
    )
    SELECT *
    FROM Trafic
           where FromCity='Qom' and
                 FromCity not in (select City from City) and
                 ToCity in (select City from City) and
                 CarPelakNumber not in (select CarPelakNumber from t)

以及查找所有进出库姆省的汽车的 SQL 代码:

;WITH T1 AS
    (
        Select * from Trafic
            where FromCity in (select City from City) and
                  ToCity ='Qom' 
    )
    , T2 as
    (
        Select * from Trafic
            where FromCity='Qom'  and
                  ToCity in (select City from City)
    )
    SELECT *
      from Trafic
              where CarPelakNumber in (select CarPelakNumber from T1) and
                    CarPelakNumber in (select CarPelakNumber from T2)

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 2020-09-12
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2011-05-02
    相关资源
    最近更新 更多