我有两个桌子:
1) profiles
+----+---------+
| id | name |
+----+---------+
| 1 | WILLIAM |
| 2 | JOHN |
| 3 | ROBERT |
| 4 | MICHAEL |
| 5 | JAMES |
| 6 | DAVID |
| 7 | RICHARD |
| 8 | CHARLES |
| 9 | JOSEPH |
| 10 | THOMAS |
+----+---------+
2) request_for_friendship
+----+---------+-------+
| id | from_id | to_id |
+----+---------+-------+
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 1 | 8 |
| 5 | 4 | 1 |
| 6 | 9 | 1 |
+----+---------+-------+
我需要profiles
整理一下所有内容并加入request_for_friendship
例如,对所有用户进行某种排序:
mysql> SELECT *
-> FROM profiles
-> ORDER BY name ASC;
+----+---------+
| id | name |
+----+---------+
| 8 | CHARLES |
| 6 | DAVID |
| 5 | JAMES |
| 2 | JOHN |
| 9 | JOSEPH |
| 4 | MICHAEL |
| 7 | RICHARD |
| 3 | ROBERT |
| 10 | THOMAS |
| 1 | WILLIAM | <-- WILLIAM IS LAST!
+----+---------+
一切看起来都不错,可以排序了。之后,我加入,request_for_friendship
我的哭泣将中断:
mysql> SELECT * FROM
-> (
-> SELECT *
-> FROM profiles
-> ORDER BY name ASC
-> ) as users
-> LEFT JOIN request_for_friendship
-> AS request_for_friendship_copy
-> ON
-> (
-> request_for_friendship_copy.from_id = 1
-> AND
-> request_for_friendship_copy.to_id = users.id
-> )
-> OR
-> (
-> request_for_friendship_copy.from_id = users.id
-> AND
-> request_for_friendship_copy.to_id = 1
-> );
+----+---------+------+---------+-------+
| id | name | id | from_id | to_id |
+----+---------+------+---------+-------+
| 2 | JOHN | 1 | 1 | 2 |
| 3 | ROBERT | 2 | 1 | 3 |
| 8 | CHARLES | 3 | 1 | 8 |
| 4 | MICHAEL | 5 | 4 | 1 |
| 9 | JOSEPH | 6 | 9 | 1 |
| 1 | WILLIAM | NULL | NULL | NULL | <-- WILLIAM IN THE MIDDLE!
| 5 | JAMES | NULL | NULL | NULL |
| 6 | DAVID | NULL | NULL | NULL |
| 7 | RICHARD | NULL | NULL | NULL |
| 10 | THOMAS | NULL | NULL | NULL |
+----+---------+------+---------+-------+
如何JOIN LEFT
与 原始分类 保存?
我无法对结果进行排序,因为* JOIN LEFT
我 在数据库中 花费约0.02sORDER BY
之前(约1000000个用户)就这样做了,但是当我花费约3.2s的时间后才这样做,这是非常大的时间:(JOIN
*ORDER BY``JOIN
**演示:rextester.com/DLLM29415**
**演示:http://sqlfiddle.com/#!9/167792/1**
在sqlfiddle中保存命令! 但是如何?MySQL 5.6保存命令?
(说明损失ORDER BY
)
SQL标准从本质上说,子查询是无序的行集。这意味着优化器可以随意忽略ORDER BY
“派生”表中的FROM ( SELECT ... ORDER BY )
。在MySQL和MariaDB的“最新”版本中,此类ORDER BYs
已被删除。还有其他情况ORDER BY
被忽略。
在 某些 情况下(不确定这一点),在优化程序欺骗LIMIT 99999999
后添加一个(大数字)。但是,以后仍然可以随意忽略“顺序”。ORDER BY``ORDER BY
MySQL的一般规则:避免子查询。(在某些情况下,子查询速度更快,但不是您的。)
一个强大的规则:你 必须 有一个ORDER BY
,如果你想要的结果进行排序的最外层。
如果您LIMIT 3
在第一个查询中已将其添加到派生表中,则只会得到CHARLES,DAVID,JAMES, 但不一定按该顺序
。也就是说,您将需要两个ORDER BYs
-一个在派生表中,一个在最后。
问题内容: 如何在不同情况下( 大写 和 小写 )对带有varchar2列的表进行排序? 例如,当我按“名称”列进行排序时,将得到以下结果: 我想要的是这样的: 问题答案: 使用,例如 如果您需要解决非英语语言的特殊字符,则可能需要有关NLSSORT的其他答案。如果您不这样做,我会尝试和KISS一起使用,因为它很容易记住和使用,并被他人阅读(可维护性)。
我的程序中只有两个线程。 我读过Java内存模型,从线程2中我所理解的读一个总是给我1。 我想知道我的理解是否正确。 特别是可以重新排序仍然发生,所以我看到a=0在第二个线程?
问题内容: 退货 (至少在Activestate Python 3.1实现上。) 我知道这是一个奇怪的对象,因此如果它出现在排序结果中的随机位置,我不会感到惊讶。但这也弄乱了容器中非南数的排序,这确实是出乎意料的。 我问了一个相关的问题有关,并根据我理解为什么是这样工作的。但这应该被视为错误吗? 文档只是说“返回一个新的排序列表”,而没有指定任何详细信息。 编辑:我现在同意这不违反IEEE标准。但
我正在使用redux saga。执行分派时,会执行likePost和addPost等函数。 然后每次我使用异步存储。获取令牌的getItem。换句话说,它是重叠的 因为我必须使用jwt令牌 我需要不断传递这样的头到api。这也是重叠 这个怎么用没有冗余,或者说怎么用最方便? 这是我的密码 (saga/post.js) (佐贺/index.js)
我有一个用户名列表,用户名列表根据用户输入的数量而增加。问题是,当用户输入用户名时,列表会被输入填充,只有当我的页面重新加载时,我的页面才会更新。这是我迄今为止尝试过的代码。 我无法在外页重新加载的情况下更新数据。请建议我如何更新ui:在外页重新加载的情况下重复数据。提前谢谢。
问题内容: 我一直在寻找一种不用使用collections.sort就可以对数组列表进行排序的方法,因为我自己的逻辑有缺陷,而且我遇到了很多麻烦。 我需要对它进行排序,以便可以使用我创建的一种方法,该方法基本上可以执行collections.swap的工作,以便对数组列表进行完全排序。 这是我的代码: 我对此一直很烦恼。抱歉,这是在伤害社区。 问题答案: 我想,你希望下面的算法:在阵列的其余部分发