我有一个关于如何从一个客户的订单表(Oracle)中检索数据的问题,如下所示:
id customer cake top
1 001 chocolate cream
2 002 chocolate jam
3 002 vanilla cream
4 003 banana cream
我想知道订单中包含巧克力蛋糕的客户的所有订单。
正确的结果应该是
id customer cake top
1 001 chocolate cream
2 002 chocolate jam
3 002 vanilla cream
我可以通过SQL中的2个单独查询来完成此操作,但有没有办法在单个查询中执行此操作?
非常感谢!
答案 0 :(得分:2)
您应该使用子查询来获取客户:
select * from order where customer in (
select distinct customer from order where cake = 'chocolate'
)
答案 1 :(得分:1)
选择包含巧克力的订单的不同客户的子查询将起作用:
select
*
from
order
where
customer
in (select
distinct customer
from
order
where
cake = 'chocolate')
答案 2 :(得分:1)
您可以使用内部查询来执行此操作。
SELECT * FROM ORDER WHERE CUSTOMER IN (
SELECT CUSTOMER FROM ORDER WHERE cake = 'chocolate'
)
答案 3 :(得分:1)
这样的事情应该有效:
SELECT *
FROM customers
WHERE EXISTS (SELECT 1
FROM order_details
WHERE customers.id = order_details.customer_id
AND cake = 'chocolate');
编辑:添加巧克力蛋糕条件。
答案 4 :(得分:0)
SELECT * FROM ORDER O1 WHERE EXISTS (
SELECT NULL FROM ORDER O2 WHERE O1.ID = O2.ID AND cake = 'chocolate'
)
您可以尝试使用此子查询的变体。