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

Alternatif untuk Intersect di MySQL

INTERSECT Microsoft SQL Server "mengembalikan nilai berbeda yang dikembalikan oleh kueri di sisi kiri dan kanan operan INTERSECT" Ini berbeda dengan INNER JOIN standar atau WHERE EXISTS kueri.

SQL Server

CREATE TABLE table_a (
    id INT PRIMARY KEY,
    value VARCHAR(255)
);

CREATE TABLE table_b (
    id INT PRIMARY KEY,
    value VARCHAR(255)
);

INSERT INTO table_a VALUES (1, 'A'), (2, 'B'), (3, 'B');
INSERT INTO table_b VALUES (1, 'B');

SELECT value FROM table_a
INTERSECT
SELECT value FROM table_b

value
-----
B

(1 rows affected)

MySQL

CREATE TABLE `table_a` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `value` varchar(255),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE `table_b` LIKE `table_a`;

INSERT INTO table_a VALUES (1, 'A'), (2, 'B'), (3, 'B');
INSERT INTO table_b VALUES (1, 'B');

SELECT value FROM table_a
INNER JOIN table_b
USING (value);

+-------+
| value |
+-------+
| B     |
| B     |
+-------+
2 rows in set (0.00 sec)

SELECT value FROM table_a
WHERE (value) IN
(SELECT value FROM table_b);

+-------+
| value |
+-------+
| B     |
| B     |
+-------+

Dengan pertanyaan khusus ini, kolom id terlibat, jadi nilai duplikat tidak akan dikembalikan, tetapi demi kelengkapan, inilah alternatif MySQL menggunakan INNER JOIN dan DISTINCT :

SELECT DISTINCT value FROM table_a
INNER JOIN table_b
USING (value);

+-------+
| value |
+-------+
| B     |
+-------+

Dan contoh lain menggunakan WHERE ... IN dan DISTINCT :

SELECT DISTINCT value FROM table_a
WHERE (value) IN
(SELECT value FROM table_b);

+-------+
| value |
+-------+
| B     |
+-------+


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

  2. Berapa ukuran kolom int(11) di mysql dalam byte?

  3. Cara Menggunakan JDBC Untuk Menghubungkan Database MySql

  4. Pengecualian:Sudah ada DataReader terbuka yang terkait dengan Koneksi ini yang harus ditutup terlebih dahulu

  5. 2 Fungsi yang Mengembalikan Nama Bulan dari Tanggal di MySQL