Mysql 列出表中的元素,添加其他表中的引用,并按顺序使用它们

Mysql 列出表中的元素,添加其他表中的引用,并按顺序使用它们,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,表: 帮助(重要的是id和fecha字段) 共享帮助(其他日期不同的用户引用的帮助) 所以 来自用户的所有帮助(用户id=1) 用户和他参考的所有帮助 SELECT * FROM helps where id_user = 1 or id IN (SELECT helpid FROM shared_helps WHERE userid = 1) 我知道你们会发现这是一个非常难看的问题(我希望你们能告诉我真相),但它似乎显示了我想要的结果。问题是,这种方式被忽略了,所以它对顺序没有影响。通过

表:

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

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

所以

来自用户的所有帮助(用户id=1)

用户和他参考的所有帮助

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

我知道你们会发现这是一个非常难看的问题(我希望你们能告诉我真相),但它似乎显示了我想要的结果。问题是,这种方式被忽略了,所以它对顺序没有影响。通过,我如何才能做到这一点?

希望这能对您有所帮助,尝试以下方式:

从帮助中选择*
helps.user\u id上的内部联接共享\u帮助= 共享的\u help.user\u id,其中help.user\u id=1
共享订单帮助。fecha ASC | DESC

编辑

根据你的评论,试试这个

ORDER BY
  COALESCE(shared_helps.fecha, helps.fecha)
或者可能是这个

ORDER BY
  helps.fecha

老实说,我不是100%确定你需要什么。也许您可以包含一些示例数据,并且希望该示例数据的输出是唯一的?在
shared\u help
中,
userid和helpid的每个组合是否唯一?或者相同的
userid
是否可以与相同的
helpid
关联多次?两者都可以。help.id是唯一的,用户只能在@dems引用同一个helpid一次。您不能假设所有记录都有
user\u id=1
。OP的子查询选择的对象在
user\u id
中可能有不同的值。它的help.id\u user但是仍然没有列出引用。请参见。。下面的答案应该对你有帮助。我将DESC附加到你的查询中,让它通过fecha下降,但它不起作用。。。知道为什么吗?我得到了一些结果,但orderby失败了。。为什么会这样?您正在获取两组结果。第一个(set1)是
id\u user=1
,第二个(set2)是首先搜索
shared\u help
。我当前的查询对结果进行排序,使得(set1)总是排在第一位,而(set2)总是排在第二位,由
shared\u help.fecha
排序。如果不希望(set1)总是排在第一位,请从
orderby
子句中删除
CASE
行。耶!这管用!如果结果是共享的,有没有办法追加一行?比如用0或1值共享附加行?@ToniMichelCaubet-我不能100%确定您现在要的是什么。我添加了两个可能的
orderby
子句。两个都试一下,玩到你想要的为止。或者编辑你的问题,包括示例数据和示例结果,这样我们就可以准确地看到你想要实现的目标。。。我的意思是,有没有一种方法可以向结果集中添加一个新行,比如is_referenced_item,当值为1时,当值为0时?(所以我可以用php知道)
ORDER BY
  COALESCE(shared_helps.fecha, helps.fecha)
ORDER BY
  helps.fecha