Два запроса выбора в одной таблице - PullRequest
0 голосов
/ 18 июня 2020

Я изо всех сил пытаюсь найти ответ на эту проблему.

У меня есть таблица, в которой я могу иметь несколько идентификаторов заказов для одного клиента (электронная почта)

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 ]

2 голосов
/ 18 июня 2020

Здесь можно использовать старый школьный способ использования in:

SELECT order_id 
FROM orders 
WHERE email IN (
                SELECT email 
                FROM orders 
                WHERE order_id = '1234567890'
                ) 

запрос стоит недорого.

2 голосов
/ 18 июня 2020

Один метод использует коррелированный подзапрос:

select o.order_id
from orders o
where o.email = (select o2.email from orders o2 where order_id = '1234567890')
0 голосов
/ 18 июня 2020

Кажется, это лучше всего подходит для простого JOIN. 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...