Oracle
 sql >> Baza danych >  >> RDS >> Oracle

istnieje zachowanie sprzężenia wewnętrznego wewnątrz sql

Różnica polega na tym, że gdy używasz exists - zapytanie wewnątrz zwykle zależy od głównego zapytania (tzn. używa kolumn z niego, więc nie może być wykonane osobno), a więc dla każdego wiersza głównego zapytania sprawdza, czy jakieś dane pobrane przez podzapytanie istnieją, czy nie.

Problem z pierwszym zapytaniem polega na tym, że podzapytanie w bloku istnieje nie zależy w żaden sposób od głównych kolumn zapytania, jest to oddzielne zapytanie, które zawsze zwraca wiersz z 1 , więc dla dowolnego wiersza głównego zapytania wynik exists zawsze będzie true . Tak więc pierwsze zapytanie jest po prostu równoważne z

SELECT distinct(company_id)
FROM user
WHERE user.user_id = 123 
AND user.company_id IS NOT NULL

Zobacz też skrzypce



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Potrzebuję pomocy w konwersji zapytania T-SQL na zapytanie obsługiwane przez Oracle

  2. Przykład Oracle Bulk Collect przy użyciu obiektu typu kursora typu Rowtype

  3. Oracle:Stwórz klucz złożony zawierający trzy klucze obce

  4. problem ze składnią sql

  5. Jak zamienić znaki specjalne, a następnie łamać linię w Oracle?