我对此问题的解决方案是使用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 的答案都解决了我的问题。
答案 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