【问题标题】:MySQL Conditional Join Queries (WordPress DB)MySQL 条件连接查询 (WordPress DB)
【发布时间】:2011-06-25 15:07:27
【问题描述】:

所以我一直在寻找如何让它工作但一直无法找到它,甚至无法正确搜索。

我希望将 t1 连接到 t2,从 t1 获得所有结果,并且它仅在 t2 的列值为“某物”的情况下连接,表设置为 t2 列中有许多项目。因此,如果 t2 的列不等于“某物”,则只需拥有其他数据(但主要我只希望 t1 行的每个值都有一个,因为每个 t1 行最多有一个 t2 行符合条件)。

select * t1 LEFT JOIN t2 where t2.column="something" AND t1 conditions.

任何帮助将不胜感激,这些表格是 WordPress 表格,我被要求做的事情在 WordPress 不知情的情况下会更容易完成。

-- 实际代码尝试:

$ SELECT * FROM posts LEFT JOIN postmeta ON post_id = id WHERE post_status='publish' AND post_type='portfolio' AND meta_key='rjmeta_video'


$Table 1
$ID     Title ....
$----------------------
$5      Some post I need outside of WP

$Table 2
$meta_id  post_id   meta_key  ....
$--------------------------------
$3        5         rjmeta_video
$4        5         _edit_lock
$5        5         _edit_last

【问题讨论】:

  • 你能举个例子吗(即2个表定义,带有虚拟内容和预期结果)?

标签: php mysql wordpress join


【解决方案1】:

我相信这就是你的意思:

select distinct t1.* from t1 
LEFT JOIN t2 on [condition for join] and t2.column="something" 
where [t1 conditions].

这假设您只对 t1 字段感兴趣。

我们不知道的:

  • 表模式
    • 他们是如何加入的? t2.t1_id = t1.id?
  • t1 条件

上面使用的DISTINCT 将在连接有多个匹配项时消除重复行

编辑(OP 评论回复):

SELECT distinct posts.* FROM posts 
LEFT JOIN postmeta ON (post_id = id and meta_key='rjmeta_video')
WHERE post_status='publish' AND post_type='portfolio'

这假定 'rjmeta_video' 是您最初所指的“东西”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2021-10-17
    • 1970-01-01
    • 2018-03-09
    • 2018-04-26
    • 2018-03-08
    • 2020-03-25
    相关资源
    最近更新 更多