我希望我的查询返回表的行,其中列首先包含一个特定的值,然后返回按字母顺序排列的其余行.
如果我有一个像这个例子的表:
- Table: Users
- id - name - city
- 1 George Seattle
- 2 Sam Miami
- 3 John New York
- 4 Amy New York
- 5 Eric Chicago
- 6 Nick New York
Run Code Online (Sandbox Code Playgroud)
并且使用该表我希望我的查询首先返回包含New York的行,然后返回按城市按字母顺序排列的其余行.这可能只使用一个查询吗?
我想在mysql查询中使用union with order.我根据不同的标准从基于距离的表中获取不同类型的记录,以便在我的网站上进行搜索.第一个选择查询返回与确切位置搜索相关的数据.第二个选择查询返回与距离搜索位置5公里内的距离相关的数据.第三个选择查询返回与距搜索地点5-15公里范围内的距离相关的数据.
然后我使用union来合并所有结果并在页面上显示分页.在"精确搜索结果","5公里范围内的结果"等适当标题下
现在我想基于id或add_date对结果进行排序.但是当我在查询结束时添加order by子句时(query1 union query 2 union query 3 order by add_date).它排序所有结果.但我想要的是它应该在每个标题下排序.
我很难将存储过程从SQL Server转换为Oracle,以使我们的产品与之兼容.
我有查询根据时间戳返回一些表的最新记录:
SQL Server:
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
Run Code Online (Sandbox Code Playgroud)
=>这将使我回到最近的记录
但甲骨文:
SELECT *
FROM raceway_input_labo
WHERE rownum <= 1
ORDER BY t_stamp DESC
Run Code Online (Sandbox Code Playgroud)
=>那将返回最旧的记录(可能取决于索引),无论ORDER BY声明如何!
我以这种方式封装了Oracle查询以满足我的要求:
SELECT *
FROM
(SELECT *
FROM raceway_input_labo
ORDER BY t_stamp DESC)
WHERE rownum <= 1
Run Code Online (Sandbox Code Playgroud)
它的工作原理.但这听起来像是一个可怕的黑客,特别是如果我在相关的表格中有很多记录.
实现这一目标的最佳方法是什么?
我需要按两列排序数据(当行具有不同的列号1的值时,按顺序排序;否则,按列号2排序)
我正在使用a QueryBuilder来创建查询.
如果我orderBy第二次调用该方法,它将替换之前指定的任何排序.
我可以传递两列作为第一个参数:
->orderBy('r.firstColumn, r.secondColumn', 'DESC');
Run Code Online (Sandbox Code Playgroud)
但我无法为第二个参数传递两个排序方向,因此当我执行此查询时,第一列按升序排序,第二列按降序排序.我想对他们两个使用降序.
有没有办法使用QueryBuilder?我需要使用DQL吗?
我希望按照它们输入IN()函数的顺序对以下查询中返回的项进行排序.
INPUT:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我可以使用Sort或OrderBy对列表进行排序.哪一个更快?两者都在使用相同的算法吗?
List<Person> persons = new List<Person>();
persons.Add(new Person("P005", "Janson"));
persons.Add(new Person("P002", "Aravind"));
persons.Add(new Person("P007", "Kazhal"));
Run Code Online (Sandbox Code Playgroud)
1.
persons.Sort((p1,p2)=>string.Compare(p1.Name,p2.Name,true));
Run Code Online (Sandbox Code Playgroud)
2.
var query = persons.OrderBy(n => n.Name, new NameComparer());
class NameComparer : IComparer<string>
{
public int Compare(string x,string y)
{
return string.Compare(x, y, true);
}
}
Run Code Online (Sandbox Code Playgroud) 执行以下语句后:
SELECT Category FROM MonitoringJob ORDER BY CreationDate DESC
Run Code Online (Sandbox Code Playgroud)
我从数据库中获取以下值:
test3
test3
bildung
test4
test3
test2
test1
Run Code Online (Sandbox Code Playgroud)
但我希望删除重复项,如下所示:
bildung
test4
test3
test2
test1
Run Code Online (Sandbox Code Playgroud)
我尝试使用DISTINCT,但它在一个语句中不能与ORDER BY一起使用.请帮忙.
重要:
我尝试过:
SELECT DISTINCT Category FROM MonitoringJob ORDER BY CreationDate DESC
Run Code Online (Sandbox Code Playgroud)
它不起作用.
CreationDate的订单非常重要.
我希望能够从电子邮件表中选择一堆行,并通过发件人对它们进行分组.我的查询如下所示:
SELECT
`timestamp`, `fromEmail`, `subject`
FROM `incomingEmails`
GROUP BY LOWER(`fromEmail`)
ORDER BY `timestamp` DESC
Run Code Online (Sandbox Code Playgroud)
查询几乎按我的意愿运行 - 它选择通过电子邮件分组的记录.问题是主题和时间戳不对应于特定电子邮件地址的最新记录.
例如,它可能会返回:
fromEmail: john@example.com, subject: hello
fromEmail: mark@example.com, subject: welcome
Run Code Online (Sandbox Code Playgroud)
当数据库中的记录是:
fromEmail: john@example.com, subject: hello
fromEmail: john@example.com, subject: programming question
fromEmail: mark@example.com, subject: welcome
Run Code Online (Sandbox Code Playgroud)
如果"编程问题"主题是最新的,那么在分组电子邮件时如何让MySQL选择该记录呢?
我想在许多字段中订购C#中的对象列表,而不仅仅是一个.例如,假设我有一个名为X的类,它有两个属性A和B,我按顺序有以下对象:
object1 => A ="a",B ="h"
object2 => A ="a",B ="c"
object3 => A ="b",B ="x"
object4 => A ="b" ,B ="b"
我想首先按A属性排序列表,当它们等于时,按B元素排序,所以顺序为:
"a""c"
"a""h"
"b""b"
"b""x"
据我所知,OrderBy方法按一个参数排序.
问题:如何通过多个字段订购C#列表?
非常感谢你
可以按多行排序吗?
我希望我的用户按last_activity排序,但同时,我希望带有图片的用户出现在没有用户之前
像这样的东西:
SELECT some_cols
FROM `prefix_users`
WHERE (some conditions)
ORDER BY last_activity, pic_set DESC;
Run Code Online (Sandbox Code Playgroud)