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

Memilih baris unik dalam satu set dua kemungkinan

Ini cukup mirip dengan apa yang Anda tulis, tetapi harus cukup cepat karena NOT EXISTS lebih efisien, dalam hal ini, daripada NOT IN...

mysql> select * from foo;
+----+-----+
| id | col |
+----+-----+
|  1 | Bar | 
|  1 | Foo | 
|  2 | Foo | 
|  3 | Bar | 
|  4 | Bar | 
|  4 | Foo | 
+----+-----+

SELECT id
     , col
  FROM foo f1 
 WHERE col = 'Foo' 
  OR ( col = 'Bar' AND NOT EXISTS( SELECT * 
                                     FROM foo f2
                                    WHERE f1.id  = f2.id 
                                      AND f2.col = 'Foo' 
                                 ) 
     ); 

+----+-----+
| id | col |
+----+-----+
|  1 | Foo | 
|  2 | Foo | 
|  3 | Bar | 
|  4 | Foo | 
+----+-----+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan fatal PHP:Panggilan ke fungsi yang tidak ditentukan mysqli_stmt_get_result()

  2. Menggabungkan dua tabel dengan sql GABUNG?

  3. Cadangkan basis data menggunakan kueri tanpa menggunakan mysqldump

  4. Jatuhkan Waktu di DateTime

  5. Bisakah saya melakukan mysql Pilih, Perbarui dan Hapus dalam satu permintaan?