将两个MySQL查询与共享结果结合起来?

将两个MySQL查询与共享结果结合起来?,mysql,Mysql,好的,我有一个问题: SELECT *, articles.article_date AS article_date FROM articles INNER JOIN thread ON (thread.thread_id = articles.thread_id) WHERE articles.article_date < 1417987751 此查询从thread表中获取来自节点66和78的所有结果,这些节点没有匹配的项目条目。因此,只有当线程没有匹配的项目条目时,才可以返回

好的,我有一个问题:

SELECT *, articles.article_date AS article_date
FROM articles
    INNER JOIN thread ON (thread.thread_id = articles.thread_id)
WHERE articles.article_date < 1417987751
此查询从thread表中获取来自节点66和78的所有结果,这些节点没有匹配的项目条目。因此,只有当线程没有匹配的项目条目时,才可以返回线程,也将返回线程。理论上,这些查询不应该有匹配的数据

然后,我需要将这两个结果结合起来,并按文章顺序和日期限制5


我该怎么做呢?

您可以在下面查询

SELECT *, thread.post_date AS article_date
FROM thread 
    LEFT JOIN (
        SELECT *
        FROM articles 
        ORDER BY article_date LIMIT 5) articles 
    ON (articles.thread_id = thread.thread_id)
WHERE thread.post_date < 1417987751
AND thread.node_id IN ('66','78');

看来你可以这样做:

SELECT *, COALESCE (articles.article_date, thread.post_date) AS _article_date
FROM thread
LEFT JOIN articles ON (articles.thread_id = thread.thread_id)
WHERE
  (articles.article_date is not NULL AND articles.article_date < 1417987751)
  OR (articles.article_date IS NULL
    AND thread.post_date < 1417987751
    AND thread.node_id IN ('66','78'))
ORDER BY
_article_date
LIMIT 5

你是说用工会?那不行。请注意,两个查询中的article_date不同。这也有一个主要错误。如果项目存在,但不在节点66或78中,则此查询不会返回该项目。我发布的第一个查询没有节点限制,只有第二个查询有节点限制。
SELECT *, COALESCE (articles.article_date, thread.post_date) AS _article_date
FROM thread
LEFT JOIN articles ON (articles.thread_id = thread.thread_id)
WHERE
  (articles.article_date is not NULL AND articles.article_date < 1417987751)
  OR (articles.article_date IS NULL
    AND thread.post_date < 1417987751
    AND thread.node_id IN ('66','78'))
ORDER BY
_article_date
LIMIT 5