sql >> Database >  >> RDS >> Mysql

Hoe elimineert Left Join / IS NULL records die wel in de ene tabel staan ​​en niet in de andere?

Dit kan worden verklaard met het volgende

mysql> select * from table1 ;
+------+------+
| id   | val  |
+------+------+
|    1 |   10 |
|    2 |   30 |
|    3 |   40 |
+------+------+
3 rows in set (0.00 sec)

mysql> select * from table2 ;
+------+------+
| id   | t1id |
+------+------+
|    1 |    1 |
|    2 |    2 |
+------+------+
2 rows in set (0.00 sec)

Hier table1.id <-> table2.t1id

Als we nu een left join doen met de samenvoegingssleutel en als de linkertabel table1 is, krijgt het alle gegevens van table1 en in niet-overeenkomend record op table2 wordt het op nul gezet

mysql> select t1.* , t2.t1id from table1 t1 
left join table2 t2 on t2.t1id = t1.id ;
+------+------+------+
| id   | val  | t1id |
+------+------+------+
|    1 |   10 |    1 |
|    2 |   30 |    2 |
|    3 |   40 | NULL |
+------+------+------+

3 rows in set (0.00 sec)

Zie dat table1.id =3 geen waarde heeft in tabel2, dus het is ingesteld als null. Wanneer u de waar-voorwaarde toepast, wordt er verder gefilterd

mysql> select t1.* , t2.t1id from table1 t1 
left join table2 t2 on t2.t1id = t1.id where t2.t1id is null;
+------+------+------+
| id   | val  | t1id |
+------+------+------+
|    3 |   40 | NULL |
+------+------+------+
1 row in set (0.00 sec)


  1. Entity Framework met MySql en migraties mislukt omdat de maximale sleutellengte 767 bytes is

  2. De DBCC_OBJECT_METADATA-vergrendeling

  3. Kan PostgreSQL-array worden geoptimaliseerd voor join?

  4. PHP - Azure mySQL in-app gewijzigde poorten willekeurig