提问者:小点点

同一表上的两个Select查询


我正在为这个问题苦苦寻找答案。

我有一个表,可以为一个客户(电子邮件)提供多个订单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'

共3个答案

匿名用户

这里可以使用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'