我有一张表格,里面有关于电视节目的信息,我想按季节和剧集订购.这是我所拥有的基本视图:
+---+--------+---------+
|id | Season | Episode |
+---+--------+---------+
| 1 | 1 | 1 |
+---+--------+---------+
| 1 | 1 | 2 |
+---+--------+---------+
| 1 | 2 | 1 |
+---+--------+---------+
| 1 | 2 | 3 |
+---+--------+---------+
Run Code Online (Sandbox Code Playgroud)
所以我选择了我需要的东西并按季节订购.但是季节之间会有很多,所以我也需要对剧集进行排序,但不会影响季节.
在我的通用存储库中,我有以下方法:
public virtual IEnumerable<T> GetAll<T>() where T : class
{
using (var ctx = new DataContext())
{
var table = ctx.GetTable<T>().ToList();
return table;
}
}
Run Code Online (Sandbox Code Playgroud)
T是Linq to Sql类,我希望能够在特定属性(即int SortOrder)上使用OrderBy.假如T具有属性名称"SortOrder",则在此属性上执行OrderBy.但我不确定如何实现这一目标.所以我需要一些帮助.谢谢!我觉得动态语言在做这类工作时真的很棒!
虽然编写类型安全的查询对于大多数场景来说都很好,但在某些情况下,您希望能够灵活地动态构建查询
这正是我面临的问题,我想知道这个linq动态助手是否可以制作成官方的.NET库.
我试图按升序运行此查询:
SELECT title,project_index
FROM projectdetail
WHERE project_index BETWEEN 1 AND 6
ORDER BY title, project_index ASC;
Run Code Online (Sandbox Code Playgroud)
我需要按升序排列两列,但上面的查询会返回只有一列的结果ASC.
我想更新表中列的前10个值.我有三列; id,account和accountrank.要获得前10个值,我可以使用以下内容:
SELECT * FROM accountrecords
ORDER BY account DESC
LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
我想要做的是根据的大小将值设置accountrank为一系列.这可以在PostgreSQL中做到吗?1 - 10account
我在mysql排序中寻找一些调整,我通常从表中选择记录,然后按名称(varchar)ASC订购记录,但数字始终是第一位的
这里有一些我的问题的例子(注意.mysql首先按0-9排序记录)
SELECT name FROM list ORDER BY name ASC
record returned:
1 star
2 star
9 slice
Ape
Age
Beg
Bell
Fish
Zoo
Run Code Online (Sandbox Code Playgroud)
我想要的是首先是字母顺序,然后是数字
期望的输出
Ape
Age
Beg
Bell
Fish
Zoo
1 star
2 star
9 slice
Run Code Online (Sandbox Code Playgroud) 我有一个表,我需要根据userID拉回5个最近的记录并键入documentID(没有重复).基本上,我正在跟踪访问过的页面并试图用户最近撤回3个页面.
样本数据:
????????????????????????????????????????????????
?UserID DocumentID CreatedDate ?
????????????????????????????????????????????????
? 71 22 2013-09-09 12:19:37.930 ?
? 71 25 2013-09-09 12:20:37.930 ?
? 72 1 2012-11-09 12:19:37.930 ?
? 99 76 2012-10-10 12:19:37.930 ?
? 71 22 2013-09-09 12:19:37.930 ?
????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
如果UserID = 71,则需要查询结果:
????????????????????????????????????????????????
?UserID DocumentID CreatedDate ?
????????????????????????????????????????????????
? 71 25 2013-09-09 12:20:37.930 ?
? 71 22 2013-09-09 12:19:37.930 ?
????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud) 所以,
问题
我的问题是 - 如何以相反的顺序将MySQL中的表连接起来?假设我有:
id name 1 First 2 Second 5 Third 6 Fourth 7 Fifth 8 Sixth 9 Seventh 13 Eight 14 Nine 15 Tenth
- 现在我想创建一个查询,它将以相反的顺序返回连接的记录:
left_id name right_id name 1 First 15 Tenth 2 Second 14 Nine 5 Third 13 Eight 6 Fourth 9 Seventh 7 Fifth 8 Sixth 8 Sixth 7 Fifth 9 Seventh 6 Fourth 13 Eight 5 Third 14 Nine 2 Second 15 Tenth 1 First
我的方法
我现在有这个查询:
SELECT
l.id AS left_id,
l.name, …Run Code Online (Sandbox Code Playgroud) 我使用以下查询与MySQL 5.5(或以前的版本)多年没有任何问题:
SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
Run Code Online (Sandbox Code Playgroud)
结果的顺序总是在我需要的时候下降.
上周,我刚刚迁移到一个新的MySQL版本(事实上,我已迁移到MariaDB 10.0.14),现在使用相同数据库的相同查询不再按降序排序.它按升序排序(或使用自然顺序排序,实际上不确定).
那么,有人可以告诉我这是一个错误还是这是对MySQL/MariaDB最新版本中行为的改变?
谢谢.
G.普兰特
使用这样的查询(为简洁起见,简化):
SELECT 'East' AS name, *
FROM events
WHERE event_timestamp BETWEEN '2015-06-14 06:15:00' AND '2015-06-21 06:15:00'
UNION
SELECT 'West' AS name, *
FROM events
WHERE event_timestamp BETWEEN '2015-06-14 06:15:00' AND '2015-06-21 06:15:00'
UNION
SELECT 'Both' AS name, *
FROM events
WHERE event_timestamp BETWEEN '2015-06-14 06:15:00' AND '2015-06-21 06:15:00'
Run Code Online (Sandbox Code Playgroud)
我想自定义结果行的顺序.就像是:
ORDER BY name='East', name='West', name='Both'
Run Code Online (Sandbox Code Playgroud)
要么
ORDER BY
CASE
WHEN name='East' THEN 1
WHEN name='West' THEN 2
WHEN name='Both' THEN 3
ELSE 4
END;
Run Code Online (Sandbox Code Playgroud)
然而,Postgres抱怨说:
ERROR: invalid UNION/INTERSECT/EXCEPT ORDER BY clause …Run Code Online (Sandbox Code Playgroud) 我正在对Android的MediaStore文件数据库查询- - MediaStore.Files.getContentUri("external"),对于某些特定的文件夹,无论是MediaStore.MediaColumns.TITLE和MediaStore.MediaColumns.DISPLAY_NAME是零,而其他文件夹,这个值存在.我找不到任何关于MediaStore.MediaColumns.TITLE可能为null的文档.
对于一些内部Android目录会发生这种情况,例如:
_data: /storage/emulated/0/Music, title: null, _display_name: null
_data: /storage/emulated/0/Notifications, title: null, _display_name: null
_data: /storage/emulated/0/Pictures, title: null, _display_name: null
Run Code Online (Sandbox Code Playgroud)
但是,对于其他一些文件夹,标题是:
_data: /storage/emulated/0/Android, title: Android, _display_name: null
_data: /storage/emulated/0/DCIM, title: DCIM, _display_name: null
_data: /storage/emulated/0/Download, title: Download, _display_name: null
Run Code Online (Sandbox Code Playgroud)
所有数据都直接来自MediaStore查询.
我知道我可以直接使用数据但我正在尝试根据TITLE对查询进行排序,这会导致错误的结果,因为有些是null.
这是预期的行为吗?如何处理它并检索按标题正确排序的所有文件?
sql-order-by ×10
sql ×6
mysql ×5
postgresql ×2
android ×1
c# ×1
generic-list ×1
group-by ×1
join ×1
linq ×1
mariadb ×1
mediastore ×1
select ×1
sorting ×1
sql-limit ×1
sql-server ×1
sql-update ×1
subquery ×1
union ×1