sql >> Database teknologi >  >> RDS >> Mysql

Hvordan vælger man fra to tabeller i MySQL, selvom ikke alle rækker i den ene tabel har korrespondenter i den anden?

For at gøre dette skal du bruge en ydre forbindelse. Den måde, du skriver din forespørgsel på med en implicit joinforbindelse, er i øvrigt forældet og anbefales ikke længere. Det anbefales at bruge JOIN nøgleordet. Dette gør det også lettere at ændre en indre sammenføjning til en ydre sammenføjning.

FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id

For at returnere 0 i stedet for NULL, brug IFNULL(..., 0) . Hele forespørgslen bliver:

SELECT
    sc.*,
    IFNULL(MIN(s.price), 0) AS minp,
    IFNULL(MAX(s.price), 0) AS maxp
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid = sc.id
GROUP BY sc.id

Du kan også overveje, om det ville være bedre at returnere standard NULL i stedet for 0 for kategorier, der ikke har nogen produkter.



  1. Konfiguration af databasemailmeddelelser i MS SQL Server

  2. Arbejde med SQL-markører

  3. Rollback en forpligtet transaktion

  4. Opdater rækker i én tabel med data fra en anden tabel baseret på, at én kolonne i hver er ens