表格:

帮助(重要的是id和fecha字段)



共享帮助(其他日期不同的用户引用的帮助)



所以,

用户的所有帮助(user_id = 1)

SELECT * FROM helps WHERE id_user = 1


用户和他所引用的所有帮助

SELECT * FROM helps where id_user = 1 or id IN (SELECT helpid FROM shared_helps WHERE userid = 1)


我知道你们会发现这是一个非常丑陋的查询(我希望您能向我展示光明),但它似乎可以显示我想要的结果。问题是这种方式shared_helps.fecha被忽略了,所以在ORDER BY中不起作用,如何实现呢?

最佳答案

SELECT
  helps.*
FROM
  helps
LEFT JOIN
  shared_helps
    ON  shared_helps.helpid = helps.id
    AND shared_helps.userid = 1
WHERE
     helps.id_user = 1
  OR shared_helps.userid = 1
ORDER BY
  CASE WHEN helps.id_user = 1 THEN 0 ELSE 1 END,
  shared_helps.fecha


编辑

根据您的评论,尝试一下...

ORDER BY
  COALESCE(shared_helps.fecha, helps.fecha)


也许这...

ORDER BY
  helps.fecha


老实说,我不是100%确定您需要什么。也许您可以包括一些样本数据以及该样本数据所需的输出?

10-08 07:13