SQL отличная группа по запросу - PullRequest
0 голосов
/ 31 мая 2018

Пример данных таблицы

id    id_order    name    phone    price
1       4E0        A       789      $100
2       4E0        A       789      $100
3       4LK        A       789      $200
4       2LP        B       420      $50
5       DK2        B       420      $80

Я хочу, чтобы результат был похож на строки различных (id_order), где phone = "789"

    id    id_order    name    phone    price
    1       4E0        A       789      $100
    3       4LK        A       789      $200

или

   id    id_order    name    phone    price
   2       4E0        A       789      $100
   3       4LK        A       789      $200

Я попробовал это, но не получил желаемый результат:

SELECT DISTINCT (id_order), * from table_name WHERE phone= "789";

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Чтобы всегда возвращать одну строку для каждого id_order - даже если имя, телефон или цена отличаются - есть подзапрос, который возвращает самый низкий идентификатор каждого id_order.JOIN с таким результатом:

select t1.*
from table_name t1
join (select min(id) minid, id_order
      from table_name
      group by id_order) t2
    on t1.id = t2.minid and t1.id_order = t2.id_order
where t1.phone = 789

Выполняется как:

SQL>select * from table_name;
         id id_order name       phone       price
=========== ======== ==== =========== ===========
          1 4E0      A            789         100
          2 4E0      A            789         100
          3 4LK      A            789         200
          4 2LP      B            420          50
          5 DK2      B            420          80

                  5 rows found

SQL>select t1.*
SQL&from table_name t1
SQL&join (select min(id) minid, id_order
SQL&      from table_name
SQL&      group by id_order) t2
SQL&    on t1.id = t2.minid and t1.id_order = t2.id_order
SQL&where t1.phone = 789;
         id id_order name       phone       price
=========== ======== ==== =========== ===========
          1 4E0      A            789         100
          3 4LK      A            789         200

                  2 rows found
0 голосов
/ 31 мая 2018
select 
    min(id) id,    
    id_order,    
    name,    
    phone,    
    price 
  from yourtable 
  group by id_order, name, phone, price
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...