Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybór unikalnych wierszy w zestawie dwóch możliwości

Jest to dość podobne do tego, co napisałeś, ale powinno być dość szybkie, ponieważ NOT EXISTS jest w tym przypadku bardziej wydajne niż 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. Zapytanie MySQL do zliczania unikalnych domen z pola adresu e-mail

  2. Problemy z hasłem MySQL (mac OS X Lion)

  3. Ukryte funkcje MySQL

  4. Jak stworzyć bloga w bazie PHP i MySQL - Admin Posts

  5. Łączenie tabel z różnych baz danych