mysql - SQL查询具有多个条件的数据

标签 mysql sql fraud-prevention

我正在尝试找到一种方法来创建一个查询,当个人提交传统上伴随其他交易的交易时,该查询返回来自个人的交易。

示例(数据如下):

我们看到员工购买了航类(购买航类的日期)。然后,他们提交了交易日期与出发日期和返回日期相匹配的行李费。然后我们看到他们提交了第三个与任何航空公司日期都不匹配的日期。

如果航空公司的出发/返回日期与交易日期相符,是否有办法确定每个需要支付行李费的人?在下面的示例中,每个员工的最后行李费用是我希望返回的行,因为它们与各自航类的出发/返回日期不匹配。

DB NAME = ExpenseTable

<表类="s-表"> <头> 员工 类型 交易日期 出发 返回 <正文> 123 航空公司 12052019 12082019 12132019 123 行李 12082019 空 空 123 行李 12132019 空 空 123 行李 12252019 空 空 567 航空公司 11052020 11082020 11132020 567 行李 11082020 空 空 567 行李 11132020 空 空 567 行李 11252020 空 空

最佳答案

我认为您可以使用“WHERE NOT EXISTS”来执行您要查找的操作。像这样:

SELECT *
FROM Transactions T1
WHERE T1.Type = 'Baggage'
AND NOT EXISTS ( 
    SELECT *
    FROM Transactions T2
    WHERE T2.Type = 'Airline'
        AND (T1.TransactionDate = T2.Depart OR T1.TransationDate = T2.Arrive)
    )

根据出发日期或到达日期,NOT EXISTS 排除任何具有匹配航空公司记录的行李记录。 (单独放置 EXISTS 会起到相反的作用……它只会显示行李交易与匹配的航空公司交易。)你可能可以通过连接来做到这一点,但是 EXISTS/NOT EXISTS 很好,因为它不会给你重复的行你的结果集。

关于mysql - SQL查询具有多个条件的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66784947/

相关文章:

php - 列计数与第 1 行错误的值计数不匹配

php - 将 Tab1 中的列名称与 Tab2 的 1 列值连接起来

MySQL:在 SELECT 查询期间为每个唯一出现标记 1

SQL Server 身份抑制上下文

mysql - 创建mysql表时出错

machine-learning - 需要用于欺诈检测的数据集

mysql - 为玩家添加金币数量

magento - 关于 Magento 许可的怀疑

mysql - Azure "MySQL server has gone away"仅一分钟