Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie Zeilen aus einer Tabelle aus, in der eine Zeile in einer anderen Tabelle mit derselben ID einen bestimmten Wert in einer anderen Spalte hat

Eigentlich würde ich dafür keinen JOIN empfehlen – oder besser gesagt, ich würde einen "Semijoin empfehlen ", ein Konzept der relationalen Algebra, das nicht direkt in SQL ausgedrückt wird. Ein Semijoin ist im Wesentlichen ein Join, bei dem Sie Datensätze aus nur einer Tabelle abrufen möchten, jedoch unter der Voraussetzung, dass sie entsprechende Datensätze in einer anderen Tabelle haben.

In der SQL-Notation wird dieses Konzept indirekt ausgedrückt, indem ein IN Klausel , mit einer Unterabfrage :

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

(MySQL übersetzt das am Ende tatsächlich intern zurück in einen Semijoin – im Wesentlichen eine Art entarteter Inner-Join – aber der IN -Klausel ist die natürliche Art, sie in rohem SQL auszudrücken.)