结合两个查询并使用HAVING

时间:2017-07-06 07:01:48

标签: mysql phpmyadmin

我对此问题的解决方案是使用2个查询,但我想知道我是否只能在一个查询中执行此操作。

我有这样的表格:

saved_docs

   id   |   user_id   |   doc_id   |   date   
-----------------------------------------------
   1    |   2         |   1        |   date       
   2    |   3         |   2        |   date       
   3    |   2         |   3        |   date   

docs_list

   id   |   url   |   title   |   date   
-----------------------------------------
   1    |   url   |   title   |   date       
   2    |   url   |   title   |   date      
   3    |   url   |   title   |   date   

我想要的是首先,以便doc_id等于user_id等于user's id。然后,将 docs 放在 docs_list 中的id等于doc_id / s的位置 saved_docs 排序 saved_docs 'date

这可以在2个查询中完成,但是如果有可能我只能在一个查询中完成,那么我会去找它。

这是我当前的 mysql查询

SELECT docs_list.url, docs_list.title

FROM docs_list

INNER JOIN saved_docs

ON saved_posts.user_id = {$user_id}

ORDER BY saved_docs.date DESC

注意:我读到HAVING,问题是我不知道如何将其应用于此查询。

当前问题:

它给了我所有明显的文档,因为它没有给出正确的doc_id / s(自动化)。我需要做什么才能按照我想要的方式做到这一点?

[解决]

注意: etsa adam 的答案都解决了我的问题。

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

SELECT docs_list.url, docs_list.title
FROM docs_list
INNER JOIN saved_docs ON docs_list.id = saved_docs.doc_id
 WHERE saved_posts.user_id = {$user_id}
ORDER BY saved_docs.date DESC

答案 1 :(得分:2)

听起来你想以相反的顺序做这件事。

首先查找用户{$user_id}保存的所有文档,然后获取有关这些文档的信息并对列表进行排序。

SELECT docs_list.url, docs_list.title
FROM saved_docs 
LEFT JOIN docs_list
ON docs_list.id = saved_docs.doc_id
WHERE saved_docs.user_id = {$user_id}
ORDER BY saved_docs.date DESC