sql >> Databasteknik >  >> RDS >> Mysql

Välj rader från en tabell där rad i en annan tabell med samma id har ett speciellt värde i en annan kolumn

Jag skulle faktiskt inte rekommendera en JOIN för detta — eller snarare, jag skulle rekommendera en "semijoin ", som är ett relationalgebra-koncept som inte uttrycks direkt i SQL. En semijoin är i huvudsak en join där du vill hämta poster från endast en tabell, men med förbehållet att de har motsvarande poster i en annan tabell.

I SQL-notation uttrycks detta koncept indirekt genom att använda en IN klausul , med en underfråga :

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

(MySQL kommer faktiskt att översätta det tillbaka till en semijoin internt - i huvudsak en sorts degenererad inner-join - men IN sats är det naturliga sättet att uttrycka det i rå SQL.)



  1. Välj att alla poster inte uppfyller vissa villkor i en sammanfogad tabell

  2. Hur man inaktiverar Change Data Capture (CDC) på en databas i SQL Server - SQL Server Tutorial

  3. Hur installerar jag Oracle SQL Developer 18.2 på Windows 10?

  4. Hur vet jag id:t innan jag sparar ett objekt i jpa