mysql - SQL 用条件区分列

标签 mysql sql database select distinct

我正在处理一个查询,我需要计算不同的 CarId行当列LocationId不为空并获取所有 CarId如果是null0但我尝试的查询区分了所有 CarId即使它为空

@LocId int

    Select Count(distinct a.CarId) from VehicleDetails a 
        inner join VehicleDocuments b on a.DocId=b.DocId
        left join VehicleShipmentDetails dpg on dpg.VehicleShipmentId= b.VehicleShipmentId
        where b.LogicalDelete=0 and a.LogicalDelete=0 
        and (dpg.LocationId= @LocId or dpg.LocationId= 0 or dpg.LocationId is null)



|  ID  |    CarId       |    LocationId   |  DateCreated  |
|------+----------------+-----------------+---------------|
|   1  |       1        |        5        |   02/03/2019  |
|   2  |       2        |      null       |   01/14/2019  |
|   3  |       2        |        0        |   02/03/2019  |
|   4  |       2        |        5        |   12/30/2018  |
|   5  |       4        |        3        |   01/10/2019  |
|   6  |       3        |        5        |   02/14/2019  |
|   7  |       2        |        5        |   03/13/2019  |

期望的输出:

|  ID  |    CarId       |    LocationId   |  DateCreated  |
+------+----------------+-----------------+---------------+
|   1  |       1        |        5        |   02/03/2019  |
|   2  |       2        |      null       |   01/14/2019  |
|   3  |       2        |        0        |   02/03/2019  |
|   4  |       2        |        5        |   03/13/2019  |
|   5  |       4        |        3        |   01/10/2019  |
|   6  |       3        |        5        |   02/14/2019  |

电流输出

|  ID  |    CarId       |    LocationId   |  DateCreated  |
+------+----------------+-----------------+---------------+
|   1  |       1        |        5        |   02/03/2019  |
|   2  |       2        |        5        |   01/14/2019  |
|   3  |       4        |        3        |   01/10/2019  |
|   4  |       3        |        5        |   02/14/2019  |

我得到的计数为4但我需要 6作为伯爵

编辑:我的目标是将行删除到 Distinct CarId如果 LocationId 的值是 Null0但在我当前的代码中,它区分了所有 CarId null , 0等于 @LocId

最佳答案

您可以查询类似的内容,将 your_table 替换为您的实际数据集。

SELECT ID, CardId, LocationId, DateCreated
FROM your_table as T
WHERE NOT EXISTS (SELECT *
                  FROM your_table as T1
                  WHERE T.ID > T1.ID AND T.CarID = T1.CarID)

关于mysql - SQL 用条件区分列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158495/

相关文章:

mysql - SQL 'If and statement' ?

php - 将lighttpd服务器移植到Android

SQL 将每个单词单独存储在文档中的最有效方法

mysql - 如何获取日期值最小的记录

sql - 复制记录以填补日期之间的空白

mysql - MYSQL获取一个用户在不同聊天中的所有对话

php - 我如何从两个表中获取数据 Laravel

php - 多次从相当大的表中提取数据会很慢

database - VoltDB 使用压缩吗?

php - 如何通过 phpmyadmin 导入一个非常大的查询?