Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 当存在外部命令BY时,我是否需要内部命令BY?_Mysql_Sql_Sql Order By - Fatal编程技术网

Mysql 当存在外部命令BY时,我是否需要内部命令BY?

Mysql 当存在外部命令BY时,我是否需要内部命令BY?,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我的问题是: ( SELECT id, table_code, seen, date_time FROM events WHERE author_id = ? AND seen IS NULL ) UNION ( SELECT id, table_code, seen, date_time FROM events WHERE author_id = ? AND seen IS NOT NULL LIMIT 2 ) UNION ( SELECT id, table_code,

我的问题是:

( SELECT id, table_code, seen, date_time FROM events
  WHERE author_id = ? AND seen IS NULL

) UNION
( SELECT id, table_code, seen, date_time FROM events
  WHERE author_id = ? AND seen IS NOT NULL
  LIMIT 2 

) UNION 
( SELECT id, table_code, seen, date_time FROM events
  WHERE author_id = ?
  ORDER BY (seen IS NULL) desc, date_time desc           -- inner ORDER BY
  LIMIT 15
)
ORDER BY (seen IS NULL) desc, date_time desc;            -- outer ORDER BY
正如您所看到的,有一个外部的
ORDER BY
,其中一个子查询也有自己的
ORDER BY
。我认为子查询中的排序依据是无用的,因为最终结果将按外部结果排序。我说得对吗?或者内部的
排序依据
对排序有任何影响



还有关于上面查询的第二个问题:实际上,我只需要
id
table\u code
。我选择了
seen
date\u time
仅用于外部
ORDER BY
,我能做得更好吗?

当查询中有
限制时,您需要内部
ORDER BY
。因此,第三个子查询是根据orderby选择15行

一般来说,如果您有
限制
,则应使用
订购。如果您正在学习数据库,则尤其如此。您可能似乎得到了正确的答案——然后在以后某个时间点它不起作用时会感到非常惊讶。仅仅因为某些东西似乎有效并不意味着它就一定有效


外部order by只对子查询返回的所有行进行排序。

您需要内部的
order by
,因为它与
limit
子句成对出现@ᴳᵁᴵᴰᴼ 哦我真的不在乎这个。。!谢谢。所以我的第二个子查询也需要一个
ORDER BY,对吗?@堆栈,除非你想要任意两行符合这些条件,那么是的。