簡體   English   中英

帶有where子句的LEFT JOIN僅用於第二個表

[英]LEFT JOIN with where clause only for second table

我有兩個表:

1. posts (id, title, content, etc)
2. post_meta (id, post_id, meta_key, meta_value)

我只想查詢一個,所有帖子的條目和post_meta的條目都只有post_meta ='x'。 帖子中的某些條目在post_meta中沒有通訊員,但我需要它們。 我可以只執行一個查詢嗎?

Select a.*, b.* 
From post a 
  left join post_meta b on (a.id = b.id and b.meta_key='x')
select * 
from post 
  left join 
  post_meta 
where isNull(post_meta.meta_value) 
      or 
      post_meta.meta_value ="x"

我已經有一段時間沒有做太多的sql了,但是我知道這是可能的。 我認為這是在查詢要聯接的表的任何值上的isNull。

select *
from posts p
   left outer join post_meta pm on p.id=pm.post_id and pm.meta_key='x'

試試這個..從post.id = post_meta.post_id上的LEFT JOIN post_meta中選擇*,其中post_meta.x ='x'

這是我的解決方案。

SELECT * FROM post,post_meta WHERE post.id=post_meta.post_id , post_meta.id="x";
SELECT posts.*, post_meta.* 
FROM posts 
LEFT JOIN post_meta 
ON posts.id = post_meta.post_id WHERE post_meta.meta_value is null OR
post_meta.meta_value = 'x'

由於您希望發自發帖表的所有發帖,而發帖表中post_meta表中對應的meta_value是'x'或meta_value不存在,因此這應該可行。

暫無
暫無

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

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