如何从两个表中提取数据时以编程方式对联合查询进行排序?例如,
SELECT table1.field1 FROM table1 ORDER BY table1.field1
UNION
SELECT table2.field1 FROM table2 ORDER BY table2.field1
Run Code Online (Sandbox Code Playgroud)
引发异常
注意:这是在MS Access Jet数据库引擎上尝试的
我有一个csv文件,我想按列优先级排序,比如"order by".例如:
3;1;2
1;3;2
1;2;3
2;3;1
2;1;3
3;2;1
Run Code Online (Sandbox Code Playgroud)
如果这种情况是"选择"的结果,"order by"将如下:order by column2,column1,column3 - 结果将是:
2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1
Run Code Online (Sandbox Code Playgroud)
我想知道如何在Unix上使用"sort"命令获得相同的结果.
好吧,我有一个带有索引键和非索引字段的表.我需要查找具有特定值的所有记录并返回该行.我想知道我是否可以按多个值排序.
例:
id x_field
-- -----
123 a
124 a
125 a
126 b
127 f
128 b
129 a
130 x
131 x
132 b
133 p
134 p
135 i
Run Code Online (Sandbox Code Playgroud)
伪:希望结果像这样订购, where ORDER BY x_field = 'f', 'p', 'i', 'a'
SELECT *
FROM table
WHERE id NOT IN (126)
ORDER BY x_field 'f', 'p', 'i', 'a'
Run Code Online (Sandbox Code Playgroud)
结果将是:
id x_field
-- -----
127 f
133 p
134 p
135 i
123 a
124 a
125 a
129 a
Run Code Online (Sandbox Code Playgroud)
语法有效,但是当我执行查询时,它永远不会返回任何结果,即使我将其限制为1条记录.还有另一种方法可以解决这个问题吗? …
这是一个表结构(例如测试):
__________________________________________
| Field Name | Data Type |
|________________|_________________________|
| id | BIGINT (20) |
|________________|_________________________|
| title | varchar(25) |
|________________|_________________________|
| description | text |
|________________|_________________________|
Run Code Online (Sandbox Code Playgroud)
像这样的查询:
SELECT * FROM TEST ORDER BY description DESC;
Run Code Online (Sandbox Code Playgroud)
但我想按字段描述的字段大小/长度排序.字段类型为TEXT或BLOB.
是否可以在DJango模板中对一组相关项进行排序?
即:此代码(为清晰起见,省略了HTML标记):
{% for event in eventsCollection %}
{{ event.location }}
{% for attendee in event.attendee_set.all %}
{{ attendee.first_name }} {{ attendee.last_name }}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
显示几乎完全是我想要的.我唯一想要改变的是我按照姓氏排序的与会者名单.我试过说这样的话:
{% for event in events %}
{{ event.location }}
{% for attendee in event.attendee_set.order_by__last_name %}
{{ attendee.first_name }} {{ attendee.last_name }}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
唉,上面的语法不起作用(它产生一个空列表),我也没有想过任何其他变化(报告了很多语法错误,但没有快乐).
当然,我可以在我的视图中生成某种排序的与会者列表,但这是一个丑陋而脆弱的(我提到丑陋)解决方案.
毋庸置疑,但无论如何我会说,我已经仔细阅读了在线文档并搜索了Stack Overflow和django-user的档案而没有发现任何有用的东西(啊,如果只有一个查询集是字典,那么dictsort就会这样做工作,但它不是,它没有)
==============================================
在接受Tawmas的回答后,编辑添加了其他想法.
Tawmas完全像我提出的那样解决了这个问题 - 虽然解决方案不是我所期望的.结果,我学到了一种可用于其他情况的有用技术.
汤姆的回答提出了我在我的OP中已经提到的一种方法,暂时被拒绝为"丑陋".
"丑陋"是一种直觉反应,我想澄清它的错误.在这样做时,我意识到这是一个丑陋的方法的原因是因为我对将查询集传递给要呈现的模板的想法感到困惑.如果我放松了这个要求,那么应该采用一种不起眼的方法.
我还没有尝试过这个,但是假设不是传递查询集,而是通过查询集迭代生成事件列表的视图代码,然后使用针对WAS排序(或过滤的)对应参与者的查询集来装饰每个事件.或者其他什么)以期望的方式.像这样的东西:
eventCollection = []
events = Event.object.[filtered and …Run Code Online (Sandbox Code Playgroud) PostgreSQL有没有办法将NULL字段中值的行排序到所选表的末尾?
喜欢:
SELECT * FROM table ORDER BY somevalue, PUT_NULL_TO_END
Run Code Online (Sandbox Code Playgroud) 如何通过字段订购DESC,但首先列出NULL值?
所以我有一张桌子:
reuestId | offerId | offerTitle
1 | 1 | Alfa
NULL | 2 | Beta
2 | 3 | Gamma
Run Code Online (Sandbox Code Playgroud)
我想选择它们,以便结果如下:
NULL | 2 | Beta
2 | 3 | Gamma
1 | 1 | Alfa
Run Code Online (Sandbox Code Playgroud) 我正在尝试按数据库中的数字列排序,其值为1-999
我用的时候
ORDER_BY registration_no ASC
Run Code Online (Sandbox Code Playgroud)
我明白了......
1
101
102
103
104
105
106
107
108
109
11
110
Etc…
Run Code Online (Sandbox Code Playgroud)
所以它似乎是按第一个数字排序,与数字相反.
如果我想按值排序,有谁知道使用什么SQL?所以,1,2,3,4,5,6等
当我写一个HQL查询
Query q = session.createQuery("SELECT cat from Cat as cat ORDER BY cat.mother.kind.value");
return q.list();
Run Code Online (Sandbox Code Playgroud)
一切都好.但是,当我写一个Criteria时
Criteria c = session.createCriteria(Cat.class);
c.addOrder(Order.asc("mother.kind.value"));
return c.list();
Run Code Online (Sandbox Code Playgroud)
我得到一个例外 org.hibernate.QueryException: could not resolve property: kind.value of: my.sample.data.entities.Cat
如果我想使用Criteria and Order,我应该如何表达我的"order by"?
我需要按日期/时间字段对PostgreSQL表进行排序,例如last_updated.
但是,该字段允许为空或空,我想与空记录last_updated来之前,非空last_updated.
这可能吗?
order by last_updated asc /* and null last_updated records first ?? */
Run Code Online (Sandbox Code Playgroud)