我想知道sql server如何对它的数据进行排序.我注意到,如果我有一个不包含列"Id"的表,并且您选择没有"ORDER BY"的数据,则sql server不会自动对主列进行排序.
有谁知道sql server遵循什么规则来排序它的数据?
MySQL(表)
id | url | lat | lng
----------------------------------
1 | x | 44.339565 | -101.337891
----------------------------------
2 | y | 44.150681 | -101.074219
----------------------------------
3 | z | 43.897892 | -100.634766
Run Code Online (Sandbox Code Playgroud)
我现在要做的是根据它们与(43.834527,-99.140625)的接近度来排序.
$a = mysql_query("SELECT * FROM table ORDER BY proximity DESC");
while($b = mysql_fetch_assoc($a))
{
echo $b['url'].'<br />';
}
Run Code Online (Sandbox Code Playgroud) 是否可以为MySQL SELECT语句指定任意顺序?例如,
SELECT * FROM table_name WHERE id IN (1, 3, 2, 9, 7) ORDER BY (1, 3, 2, 9, 7);
Run Code Online (Sandbox Code Playgroud)
直接列出的数字的顺序IN似乎并不重要.
可能重复:
使用Null进行大小写
我想获得一个由"ordernum"字段排序的记录列表.ordernum字段是一个int字段.此字段从NULL开始,直到由用户设置.我希望NULL条目出现在列表的末尾.
我正在构建一个查询如下:
select *, case when (ordernum is null) then [largestInt] else ordernum end as newordernum
from tableName
order by newordernum
Run Code Online (Sandbox Code Playgroud)
我知道我可以为[largestInt]输入最大可能int的值,但我想用变量替换[largestInt].这可能吗?
我有一个包含datetime字段类型的表,我想对select语法进行排序取决于它的降序,如下所示:
2012-12-12 01:44:20
2012-12-11 01:44:40
2012-12-10 01:40:36
2012-12-09 12:28:19
2012-12-09 12:19:21
2012-12-09 12:11:50
2012-12-09 12:00:11
2012-12-09 11:59:26
2012-12-09 11:57:08
2012-12-09 11:55:21
这是我的NEWSPAPER表.
National News A 1
Sports D 1
Editorials A 12
Business E 1
Weather C 2
Television B 7
Births F 7
Classified F 8
Modern Life B 1
Comics C 4
Movies B 4
Bridge B 2
Obituaries F 6
Doctor Is In F 6
Run Code Online (Sandbox Code Playgroud)
当我运行此查询
select feature,section,page from NEWSPAPER
where section = 'F'
order by page;
Run Code Online (Sandbox Code Playgroud)
它给出了这个输出
Doctor Is In F 6
Obituaries F 6
Births F 7
Classified F 8
Run Code Online (Sandbox Code Playgroud)
但在Kevin Loney的Oracle 10g Complete Reference中输出就是这样的
Obituaries …Run Code Online (Sandbox Code Playgroud) 假设我们在表格中有4个项目:
搜索词是" Jordan ",如何按字母顺序排序结果,但搜索词匹配首先如下:
我使用此代码,但没有得到我想要的:
$this->db->select('id, name');
$this->db->from('users');
$this->db->like('name', $search_term);
$this->db->order_by('name', 'asc');
$query = $this->db->get();
Run Code Online (Sandbox Code Playgroud) 在我们的数据库访问层中,我们有一些动态查询创建.例如,我们有以下方法来构建ORDER BY子句的一部分:
protected string BuildSortString(string sortColumn, string sortDirection, string defaultColumn)
{
if (String.IsNullOrEmpty(sortColumn))
{
return defaultColumn;
}
return String.Format("{0} {1}", sortColumn, sortDirection);
}
Run Code Online (Sandbox Code Playgroud)
问题是,sortColumn并且sortDirection都来自外部作为字符串,因此当然应该采取措施来防止可能的注入攻击.有没有人知道如何做到这一点?
我可以在mysql上轻松完成
select * from TABLE order by length(FIELD) asc
Run Code Online (Sandbox Code Playgroud)
我怎么能在MongoDB上做到这一点?
这是我正在创建的表格,此表包含有关玩最后一个杯子的玩家的信息.
CREATE TABLE players (
group text, equipt text, number int, position text, name text,
day int, month int, year int,
club text, liga text, capitan text,
PRIMARY key (name, day, month, year));
Run Code Online (Sandbox Code Playgroud)
执行以下查询时:
从作为选拔队队长的最老的球员那里获得5个名字
这是我的查询:
SELECT name FROM players WHERE captain='YES' ORDER BY year DESC LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
仅当分区键受EQ或IN限制时才支持
我认为这是我正在创建的表的一个问题,但我不知道如何解决它.
谢谢.