簡體   English   中英

SQL根據初始表的ID聯接另一個表

[英]SQL Joining another table based on the ID of the initial table

我真的真的似乎無法掌握SQL Joins的共生關系,等等...所以我需要一些幫助(我認為這很簡單)

我正在查詢bid_tag ,如下所示:

SELECT paid_date, term, pet_id FROM bid_tag WHERE active = 1

我需要使用pet_id從另一個表wp_postmeta獲取一些信息,該表實際上位於meta_key meta_value結構(WordPress)中。

因此,我需要獲取meta_valuemeta_key ”的meta_value,例如...以及其他值。

TABLE
id | meta_key | meta_value
1    bid_name    Max

ID是一樣的ID ,我需要初始表連接到...

我真的很感激!

加入idmeta_key來選擇所需的值。 如果您還希望值與元表中的其他鍵一起使用,則一種方法是多次聯接:

SELECT bt.paid_date, bt.term, bt.pet_id,
    bn.meta_value as bidname,
    bo.meta_value as bidother
FROM bid_tag bt
INNER JOIN wp_postmeta bn on bn.id = bt.pet_id and bn.meta_key = 'bid_name'
INNER JOIN wp_postmeta bo on bo.id = bt.pet_id and bo.meta_key = 'bid_other'
WHERE bt.active = 1

如果值不一定在元表中出現,請改用LEFT OUTER JOIN ,如果缺少任何內容,它將返回null

這是查詢的方式:

SELECT B.meta_key, B.meta_value, A.pet_id
FROM bid_tag A
JOIN wp_postmeta B
ON B.id = A.pet_id;

有一些使用聯接的方法:
1)使用inner join或相等地只是join

select 
  --some columns
from bid_tag
join wp_postmeta on
  bid_tag.pet_id = wp_postmeta.id
where
  wp_postmeta.meta_key = 'bid_name'

其結果將只具有哪些記錄pet_id存在於wp_postmeta 另一個將被省略。 如果wp_postmeta具有相同幾個記錄id (和存在pet_id等於這個id ),那么你會得到這個pet_id一對夫婦記錄( 具有不同的meta_keymeta_value )。
2)使用left join

select 
  --some columns
from bid_tag
left join wp_postmeta on
  bid_tag.pet_id = wp_postmeta.id
where
  wp_postmeta.meta_key = 'bid_name'

在這種情況下,除了一件事外,行為將是相同的-即使pet_id沒有任何id ,結果也將包含來自wp_postmeta帶有此pet_id記錄。 但是在這種情況下, meta_keymeta_value將為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM