我有3个表:人员,团体和会员.成员资格是人和组之间的连接表,有3列:personId,groupId和description(text).
我想根据groupId从成员资格表中选择条目,但是根据与找到的成员资格相关联的人员的姓名对结果进行排序(名称是人员表的列)
SELECT * FROM "memberships" WHERE ("memberships".groupId = 32) ORDER BY (?????)
Run Code Online (Sandbox Code Playgroud)
是否可以在一个查询中实现此目的?
我是Linq的新手,VB中orderby的语法是什么?
Dim cxt As New datContext
Dim qry = (From lst In cxt.zipcodes _
Select lst.state).Distinct
qry = qry.OrderBy()
Run Code Online (Sandbox Code Playgroud)
我的简单sql语句将是这样的:
Select distinct state from zipcodes
order by State
Run Code Online (Sandbox Code Playgroud) 假设向MySQL数据库发出以下查询:
SELECT * FROM table_name;
Run Code Online (Sandbox Code Playgroud)
请注意,没有 ORDER BY给出任何条款.
我的问题是:
MySQL是否给出了结果集行的顺序保证?
更具体地说,我可以假设行将按插入顺序返回吗?这与行插入表中的顺序相同.
如果我有:
ID | Title
1 | Shirt
2 | CD
3 | Cap
4 | Mp3
5 | Badge
Run Code Online (Sandbox Code Playgroud)
如果我想按此顺序排序:4,2,5,3,1.有没有办法在您明确指定的情况下进行SQL查询?就像是:
select * from TABLE order by ID(4,2,5,3,1) ??
Run Code Online (Sandbox Code Playgroud) 当我从包含一些孩子的数据库中检索项目列表(通过.Include),并随机排序时,EF给我一个意想不到的结果..我创建/克隆添加项目..
为了更好地解释自己,我创建了一个小而简单的EF CodeFirst项目来重现问题.首先,我将为您提供此项目的代码.
创建一个基本的MVC3项目,并通过Nuget添加EntityFramework.SqlServerCompact包.
这会添加以下软件包的最新版本:
模型和DbContext
using System.Collections.Generic;
using System.Data.Entity;
namespace RandomWithInclude.Models
{
public class PeopleContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Address> Addresses { get; set; }
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
}
public class Address
{
public int ID { get; set; …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的表:
id | SubjectCode | Grade | DateApproved | StudentId
1 SUB123 1.25 1/4/2012 2012-12345
2 SUB123 2.00 1/5/2012 2012-12345
3 SUB123 3.00 1/5/2012 2012-98765
Run Code Online (Sandbox Code Playgroud)
我正在尝试GROUP BY SubjectCode,但我希望它显示最近的DateApproved,所以它看起来像:
id | SubjectCode | Grade | DateApproved | StudentId
2 SUB123 2.00 1/5/2012 2012-12345
3 SUB123 3.00 1/5/2012 2012-98765
Run Code Online (Sandbox Code Playgroud)
我有点迷失在怎么办?
编辑:
好的家伙现在我在我的真实PC上,抱歉这个构造不好的问题.
这就是我实际上要做的事情:
SELECT GD.GradebookDetailId, G.SubjectCode, G.Description, G.UnitsAcademic, G.UnitsNonAcademic,
GD.Grade, GD.Remarks, G.FacultyName, STR_TO_DATE(G.DateApproved, '%m/%d/%Y %h:%i:%s') AS 'DateAproved'
FROM gradebookdetail GD INNER JOIN gradebook G ON GD.GradebookId=G.GradebookId
WHERE G.DateApproved IS NOT NULL AND …Run Code Online (Sandbox Code Playgroud) 这给了我一行(第一行):
SELECT BLA
FROM BLA
WHERE BLA
AND ROWNUM < 2
Run Code Online (Sandbox Code Playgroud)
但是,我想要最新的日期值; 我可以这样做第一行:
SELECT BLA
FROM BLA
WHERE BLA
ORDER BY FINALDATE DESC
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试混合两个部分胜利时,它不起作用 - 显然"选择第一行"逻辑在顺序之前触发,然后顺序依次被忽略.
我有一个rails应用程序:
user has_many :projects
user has_many :tasks, :through => :projects
project has_many :tasks
每项任务都有一个里程碑日期.
要显示我正在使用的下一个里程碑日期的项目详细信息表:
@projects = current_user.tasks.joins(:project).select("distinct on (projects.id) projects.*, tasks.*").reorder("projects.id, tasks.milestone ASC")
Run Code Online (Sandbox Code Playgroud)
这很好用.
我现在希望能够对表列进行排序.
根据Postgres DISTINCT ON不可排序,你必须将它包装在另一个select语句中,即SELECT * FROM (SELECT DISTINCT ON....) ORDER BY column_3
我确实认为订购的列可以根据需要在SQL中使用,即(按项目名称DESC排序):
@projects = current_user.tasks.joins(:project).select("distinct on (projects.name) projects.*, tasks.*").reorder("projects.name DESC, tasks.milestone ASC")
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我也希望能够通过里程碑进行排序,但这样做不起作用.
有人能告诉我如何转换我的rails查询,以便可以通过任何列进行排序吗?
UPDATE
我想我的问题很简单我怎么在周围包裹一个ActiveRecord的查询SELECT和ORDER BY?
我想我已经成功实现了它:
inner_query = current_user.tasks.select("distinct on (projects.id) projects.*, tasks.*").reorder("projects.id, tasks.milestone ASC").to_sql
@projects = Task.paginate_by_sql("select * from (#{inner_query}) as user_projects order by user_projects.name", …Run Code Online (Sandbox Code Playgroud) 我有桌子:
table1
------------
id | name
------------
1 | John
2 | Steeve
3 | Walter
4 | Daniel
5 | Jeremy
6 | Carmelo
...
Run Code Online (Sandbox Code Playgroud)
我需要的是从表中选择我手动输入例如id 5,3,6,1,4,2
SELECT * FROM talbe1 ORDER BY (5,3,6,1,4,2)
Run Code Online (Sandbox Code Playgroud)
有可能吗?谢谢!
我有以下查询在Postgres 9.1中很有用:
SELECT users.id, GREATEST(
COALESCE(MAX(messages.created_at), '2012-07-25 16:05:41.870117'),
COALESCE(MAX(phone_calls.created_at), '2012-07-25 16:05:41.870117')
) AS latest_interaction
FROM users LEFT JOIN messages ON users.id = messages.user_id
LEFT JOIN phone_calls ON users.id = phone_calls.user_id
GROUP BY users.id
ORDER BY latest_interaction DESC
LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
但我想做的是这样的事情:
SELECT users.id, GREATEST(
COALESCE(MAX(messages.created_at), '2012-07-25 16:05:41.870117'),
COALESCE(MAX(phone_calls.created_at), '2012-07-25 16:05:41.870117')
) AS latest_interaction
FROM users LEFT JOIN messages ON users.id = messages.user_id
LEFT JOIN phone_calls ON users.id = phone_calls.user_id
GROUP BY users.id
ORDER BY
CASE WHEN(
latest_interaction > '2012-09-05 16:05:41.870117')
THEN …Run Code Online (Sandbox Code Playgroud) sql-order-by ×10
sql ×5
mysql ×4
activerecord ×1
asp.net-mvc ×1
case ×1
distinct ×1
distinct-on ×1
group-by ×1
linq ×1
oracle ×1
postgresql ×1
random ×1
select ×1
vb.net ×1