我有三张桌子,他们的结构如下。
在keyword
表格中,我有唯一关键字。关键字包含多个用户或domain_id,因此我有keyword_user
表。
在排名表中,我有一些与关键字相关的数字。
我想返回与我选择的domain_id相关的所有关键字。
我的条件是:
问题是:
如果我写keyword_user.domain_id = 1234
,它会返回关键字表中的所有行,但排名结果不正确。
如果我写rank.domain_id
,它只会返回与keyword_last_date相关的行。
在min(rank_position)
上使用SELECT
导致错误的结果。
我希望关键字表中的所有关键字都在keyword_user.domain_id = XXX
和rank_date = keyword.keyword_last_date
。域必须是我的域名不是别的。
SELECT rank.rank_id
, keyword_name
, keyword_last_date
, MIN(rank_position) my_rank
, rank_url
, rank.domain_id
FROM keyword
LEFT
JOIN keyword_user
ON keyword.keyword_id = keyword_user.keyword_id
LEFT
JOIN rank
ON keyword.keyword_id = rank.keyword_id
WHERE keyword_user.domain_id = 8262
AND rank.domain_id = 8262
AND rank_date = keyword.keyword_last_date
GROUP
BY keyword.keyword_name
ORDER
BY rakip_rank
从图片中可以看出。 domain_id列有不同的值,但我有domain_id = 8262 。它们与我的预期结果无关。 my_rank列也应该是不同的值,而不仅仅是“1”。
TABLE:关键字
表:排名
TABLE:keyword_user