0
Ben ALL
ile NOT
operatörü kullanmaya çalışıyorum ama sql DEĞİL TÜM operatör ile
+------+------+
| id | name |
+------+------+
| 6 | a |
| 7 | b |
| 8 | c |
| 9 | d |
| 10 | e |
+------+------+
5 rows in set (0.04 sec)
:
tablex örneğin içeriyor
+------+------+
| id | name |
+------+------+
| 4 | a |
| 5 | b |
| 7 | c |
| 8 | d |
+------+------+
4 rows in set (0.03 sec)
i kullandım:
ve Tabley içeren
SELECT id, name FROM tablex WHERE NOT id < ALL (SELECT id FROM tabley);
döner:
+------+------+
| id | name |
+------+------+
| 6 | a |
| 7 | b |
| 8 | c |
| 9 | d |
| 10 | e |
+------+------+
5 rows in set (0.00 sec)
sorun, çözüm operatörü >
kullanarak çok mantıklı, ama bunun sebebi nedir bazı durumlarda 'Tabley' göre daha düşük değerler döndürür olmasıdır ? Eğer id
alt sorguda en küçükid
daha küçük olduğundan emin olmak için, gibi
Tamam, ama bir örnek:
SELECT id, name FROM tablex WHERE NOT id < ANY (SELECT id FROM tabley);
döner:+------+------+ | id | name | +------+------+ | 8 | c | | 9 | d | | 10 | e | +------+------+ 3 rows in set (0.11 sec)
neden ile çalışır 'HERHANGİ' ama 'ALL' ile hayır? – nikomaster@nikomaster belki de bu, aşağıdakileri göstermeye yardımcı olabilir: http://stackoverflow.com/a/2298576/139010 –
Ve bu: _ "Karşılaştırma operatörü tarafından takip edilmesi gereken" ALL "sözcüğü, karşılaştırma" TRUE "değerini döndürür alt sorgusunun döndürdüğü sütundaki değerlerin tümü için 'TRUE' olur. ”" _ http://dev.mysql.com/doc/refman/5.7/en/all-subqueries.html –