Python MySQL Join

组合两张或更多表

您可以使用 JOIN 语句,根据它们之间的相关列组合两个或多个表中的行。

假设您有 "users" 表和 "products" 表:

users

{ id: 1, name: 'John', fav: 154},
{ id: 2, name: 'Peter', fav: 154},
{ id: 3, name: 'Amy', fav: 155},
{ id: 4, name: 'Hannah', fav:},
{ id: 5, name: 'Michael', fav:}

products

{ id: 154, name: 'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{ id: 156, name: 'Vanilla Dreams' }

可以使用 users 的 fav 字段和 products 的 id 字段来组合这两个表。

Contoh

组合用户和产品,查看用户最喜欢的产品名称:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  passwd="yourpassword",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  Dari users \

  INNER JOIN products ON users.fav = products.id"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

Jalankan Instan

Keterangan:Anda dapat menggunakan JOIN daripada INNER JOIN. Kedua-duanya akan memberikan hasil yang sama.

LEFT JOIN

Dalam contoh di atas, Hannah dan Michael di eksklusi dari hasil, karena INNER JOIN hanya menampilkan catatan yang cocok.

Jika Anda ingin menampilkan semua pengguna, bahkan jika mereka tidak mempunyai produk yang disukai, gunakan pernyataan LEFT JOIN:

Contoh

Pilih semua pengguna serta produk yang disukainya:

sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  Dari users \

  LEFT JOIN products ON users.fav = products.id"

Jalankan Instan

RIGHT JOIN

Jika Anda ingin mengembalikan semua produk serta pengguna yang menyukainya, bahkan jika tidak ada pengguna yang menyukai produk itu, gunakan pernyataan RIGHT JOIN:

Contoh

Pilih semua produk serta pengguna yang menyukainya:

sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  Dari users \

  RIGHT JOIN products ON users.fav = products.id"

Jalankan Instan

Keterangan:Hannah dan Michael yang tidak memerlukan produk apapun tidak termasuk dalam hasil.