sql >> Database >  >> RDS >> Mysql

Selecteer rijen uit een tabel waar een rij in een andere tabel met dezelfde id een bepaalde waarde heeft in een andere kolom

Ik zou hier eigenlijk geen JOIN voor aanraden - of liever, ik zou een "semijoin aanraden ", wat een relationeel-algebraconcept is dat niet direct in SQL wordt uitgedrukt. Een semijoin is in wezen een join waarbij u records uit slechts één tabel wilt ophalen, maar met dien verstande dat ze overeenkomstige records in een andere tabel hebben.

In SQL-notatie wordt dit concept indirect uitgedrukt door gebruik te maken van een IN clausule , met een subquery :

SELECT key, value
  FROM comments
 WHERE key IN
        ( SELECT comment_key
            FROM meta
           WHERE value = 1
        )
;

(MySQL zal dat uiteindelijk intern vertalen naar een semi-join - in wezen een soort gedegenereerde inner-join - maar de IN clausule is de natuurlijke manier om het uit te drukken in onbewerkte SQL.)



  1. Databaseontwerp voor meertalige toepassingen

  2. Python- en SQLite-waarschuwingen

  3. Opslaggroottes voor MySQL TEXT-gegevenstypen begrijpen

  4. java.sql.SQLException:ORA-03115:niet-ondersteund datatype of representatie van het netwerk