我正在尝试找到一种方法来创建一个查询,当个人提交传统上伴随其他交易的交易时,该查询返回来自个人的交易。
示例(数据如下):
我们看到员工购买了航类(购买航类的日期)。然后,他们提交了交易日期与出发日期和返回日期相匹配的行李费。然后我们看到他们提交了第三个与任何航空公司日期都不匹配的日期。
如果航空公司的出发/返回日期与交易日期相符,是否有办法确定每个需要支付行李费的人?在下面的示例中,每个员工的最后行李费用是我希望返回的行,因为它们与各自航类的出发/返回日期不匹配。
DB NAME = ExpenseTable
最佳答案
我认为您可以使用“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/