Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL за връщане на обединен набор от резултати

Това може да се постигне с релационно деление :

select r.order_id from (
  select 
    dividend.*  
  from your_table_or_query as dividend  -- assumes no duplicates in `dividend`; use `distinct` if there are any
  inner join divisor
  on dividend.value = divisor.value
) as r
group by r.order_id
having count(*) = (select count(*) from divisor);

резултат:

+----------+
| order_id |
+----------+
|     1236 |
|     1239 |
+----------+
2 rows in set (0.00 sec)

където вашата заявка е your_table_or_query и

select 260 as value from dual union select 264 as value from dual

е divisor .

Това ще върне идентификаторите на поръчката 1236 и 1239; след това те могат да бъдат join ed към оригиналната заявка, за да получите всички редове с тези идентификатори на поръчки, ако това е, което искате.

Пълна заявка заедно с изрази за вмъкване:

create table divisor (value int);
insert into divisor values (260), (264);

create table your_table_or_query (value int, order_id int);
insert into your_table_or_query values (260, 1234), (260, 1235), (260, 1236), (264, 1236), (260, 1237), (260, 1238), (260, 1239), (264, 1239), (264, 1240), (260, 1241);


select y.* from (
  select r.order_id from (
    select
      dividend.*
    from your_table_or_query as dividend
    inner join divisor
      on dividend.value = divisor.value
  ) as r 
  group by r.order_id
  having count(*) = (select count(*) from divisor)
) as quotient
inner join your_table_or_query y
  on quotient.order_id = y.order_id;

Резултат:

+-------+----------+
| value | order_id |
+-------+----------+
|   260 |     1236 |
|   264 |     1236 |
|   260 |     1239 |
|   264 |     1239 |
+-------+----------+
4 rows in set (0.00 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INTERSECT в MySQL

  2. mysql jdbc драйвер не поддържа разделители в тригери с множество изрази

  3. Не мога да добавя колона от рамка с данни на pandas към mysql в python

  4. WooCommerce сериализира масив от мета стойности в таблицата wp_postmeta

  5. Има ли начин да получите първия и последния делничен ден от месеца?