2016-02-05 46 views
-2

我有一张包含数千条记录的表。该表的 结构请根据我的需要在mysql中编写查询

object_id | term_taxonomy_id 

我的查询是我希望所有object_ids至极已经term_taxonomy_id = 280和term_taxonomy_id = 306

所以我的输出应该是这样的

object_id | term_taxonomy_id | term_taxonomy_id 
1   | 280    | 306 
10   | 280    | 306 

请编写查询以此目的。

在此先感谢

编辑:

SELECT * 
FROM `wp_term_relationships` r 
LEFT JOIN wp_term_relationships rr ON rr.term_taxonomy_id = r.term_taxonomy_id 
LEFT JOIN wp_term_relationships rrr ON rr.term_taxonomy_id = r.term_taxonomy_id 
WHERE rrr.term_taxonomy_id =280 
AND rr.term_taxonomy_id =306 
GROUP BY r.object_id 

我上面写的查询。

+1

请提供适当的表格结构,并显示您所做的努力。 –

+0

看到我的查询请 – user3886556

+2

它不是你命令我们做我们不能做你的工作,但我们可以帮助你的努力..第一尝试把你的努力,试试很多次,如果不是然后在这里发布与我的代码 –

回答

1

使用自加盟是一个好主意,但是你应该加入对OBJECT_ID,而不是term_taxonomy_id,并使用内部连接,而不是左:

SELECT DISTINCT r.object_id, r.term_taxonomy_id, rr.term_taxonomy_id 
FROM `wp_term_relationships` r 
INNER JOIN wp_term_relationships rr ON rr.object_id = r.object_id 
WHERE r.term_taxonomy_id =280 
AND rr.term_taxonomy_id =306 
+0

太棒了!它像一个魅力工作! 感谢您的回答 – user3886556

0
SELECT * FROM TableName WHERE term_taxonomy_id = 280 AND term_taxonomy_id = 306 

照你说你有一个表

+0

感谢您的答案,但它给了我空的结果。那里只有两个领域。 1. object_id 2. term_taxonomy_id – user3886556

+0

然后你没有任何记录匹配条件 –

+0

当然,你不能指望单个字段满足2个条件,同时通过'和'连接。这个查询绑定返回一个空的结果集。 – Shadow

0
SELECT DISTINCT (
object_id 
) 
FROM wp_term_relationships 
WHERE term_taxonomy_id =280 
OR term_taxonomy_id =306 

我找到了这样做的方法。

+0

这不符合您在问题中的要求,因为它甚至会列出只包含两个term_taxonomy_ids之一的object_id。你在OP中清楚地写了'和'。 – Shadow

+0

是的你是对的。这就是为什么我将你的答案标记为完美! – user3886556