早上好
我遇到的问题涉及带有事务的数据库。交易按销售的每个项目存储为行。如果我要选择包含项目11222的所有交易,以便可以看到还购买了哪些其他项目,代码将是什么?
我正在使用:
SELECT [Transaction]
, [Date]
, [Item]
, [Register]
, [Location]
WHERE [Item] = 11222
FROM "Transactions"
然后分别查看每个交易的日期和位置以查看,但是我现在的要求是查看数千个交易。即使特定的行中不包含所请求的项目#,SQL中是否也可以有条件地拉出所有行?
表格中数据的示例:
Transaction Date Item Register Location
123 1/1/2019 11222 1 15
123 1/1/2019 45663 1 15
124 1/1/2019 77433 1 15
124 1/1/2019 11222 1 15
124 1/1/2019 66092 1 15
125 1/1/2019 66933 1 15
125 1/1/2019 77433 1 15
126 1/1/2019 11222 1 15
126 1/1/2019 82991 1 15
127 1/1/2019 88392 1 15
127 1/1/2019 88492 1 15
答案 0 :(得分:1)
我将其表达为exists
:
SELECT t.*
FROM Transactions t
WHERE EXISTS (SELECT 1
FROM Transactions t2
WHERE t2.transaction = t.transaction AND
t2.Item = 11222
)
ORDER BY t.transaction; -- keep all the rows for a given transaction together