我正在为这个问题苦苦寻找答案。
我有一个表,可以为一个客户(电子邮件)提供多个订单ID
email (unique), order_id
我需要进行一个查询,在该查询中为客户传递任何order_id,它将返回他们的所有订单。
我需要将两个select查询组合成一个查询,以节省加载时间。
SELECT email FROM orders WHERE order_id = '1234567890'
SELECT order_id FROM orders WHERE email = 'email_found_from_first_query'
这里可以使用in的一种老派用法:
SELECT order_id
FROM orders
WHERE email IN (
SELECT email
FROM orders
WHERE order_id = '1234567890'
)
查询有点贵。
一种方法使用相关子查询:
select o.order_id
from orders o
where o.email = (select o2.email from orders o2 where order_id = '1234567890')
这似乎最适合简单的连接。 https://www.mysqltutorial.org/mysql-join/
SELECT orig_order.email, all_orders.order_id
FROM orders as orig_order
JOIN orders as all_orders ON orig_order.email = all_orders.email
WHERE orig_order.order_id = '1234567890'