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

SQL:Kesalahan sintaks dengan intersect?

MySQL, yang tampaknya Anda gunakan, tidak mendukung INTERSECT sintaksis. Anda harus menyelesaikannya dengan cara lain.

Dalam hal ini, ini sepele -kami hanya memerlukan daftar semua pemasok yang menawarkan "hijau" dan "merah" dari beberapa bagian- permintaan Anda tidak mengganggu untuk melihat apakah bagian itu sendiri terkait, jadi kami dapat menyelesaikannya dengan cukup mudah seperti ini:

SELECT Suppliers.sid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Parts.color IN ('red', 'green')
GROUP BY Suppliers.sid
HAVING COUNT(DISTINCT Parts.color) = 2

Secara pribadi, saya tidak percaya kueri asli adalah tipikal INTERSECT masalah. Lihat JOIN solusi yang ditawarkan oleh Vinko Vrsalovic untuk solusi umum untuk meniru INTERSECT (yang saya lebih suka bahkan jika RDBMS sebenarnya menawarkan INTERSECT asli).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 10 tips bermanfaat tentang penyetelan kinerja MySQL

  2. Bagaimana cara memilih standar deviasi dalam satu baris? (dalam SQL - atau R :)

  3. Bagaimana cara membuat kueri rekursif hierarkis MySQL?

  4. Memasukkan daftar yang menyimpan banyak nilai di MySQL menggunakan pymysql

  5. Pendekatan sharding MySQL?