Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL untuk mengembalikan kumpulan hasil yang digabungkan

Ini dapat dilakukan dengan divisi relasional :

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);

hasil:

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

di mana kueri Anda adalah your_table_or_query dan

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

adalah divisor .

Ini akan mengembalikan id pesanan 1236 dan 1239; mereka kemudian dapat join ed ke kueri asli untuk mendapatkan semua baris dengan id pesanan tersebut jika itu yang Anda inginkan.

Kueri lengkap beserta pernyataan penyisipan:

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;

Hasil:

+-------+----------+
| 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. Apa susunan MySQL terbaik untuk bahasa Jerman?

  2. tidak dapat menampilkan thumbnail di layar saya mendapatkan layar putih bersih dengan sedikit gambar rusak di kiri atas

  3. Bagaimana menangani koneksi MySQL dengan Python multithreading

  4. GROUP BY untuk baris berkelanjutan dalam SQL

  5. Gagal membaca nilai kenaikan otomatis dari mesin penyimpanan, Nomor Kesalahan:1467