我试图得到一个组,然后按计数顺序工作,但我不断被抛出'Antlr.Runtime.NoViableAltException'.
这是我可以创建的最简单的错误案例.
var results = ArticleStatsRepository.GetAll().GroupBy(x => x.Article.ArticleId)
.OrderBy(x => x.Count());
Run Code Online (Sandbox Code Playgroud)
ArticleStatsRepository.GetAll()返回ArticleStats的IQueryable.
public class ArticleStats
{
public virtual int ArticleStatsId { get; set; }
public virtual Article Article { get; set; }
public virtual User Viewer { get; set; }
public virtual ArticleStatTypeEN ArticleStatType { get; set; }
public virtual DateTime DateTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
最终我想要执行以下查询.
return ArticleStatsRepository.GetAll()
.Where(x => x.DateTime > DateTime.Now.Add(-timeSpan))
.Where(x => x.ArticleStatType == ArticleStatTypeEN.View)
.GroupBy(x => x.Article.ArticleId)
.Select(x => new { ArticleId = x.Key, …Run Code Online (Sandbox Code Playgroud) 我试图从一张表中选择按价格,年份,名称和其他订购的产品列表....问题是我必须在排序升序时使零值最后.
我的代码是:
SELECT * FROM Product P
ORDER BY CASE WHEN @OrderBy='Date ASC' THEN Date END ASC,
CASE WHEN @OrderBy='Price ASC' THEN Price END ASC,
CASE WHEN @OrderBy='Title ASC' THEN Title END ASC,
CASE WHEN @OrderBy='' THEN Match END
Run Code Online (Sandbox Code Playgroud)
这有效,但不要将零置于列表的底部.所以,我试图对其进行转换(请参阅下一个代码),但它在","附近给出了错误语法错误.
SELECT * FROM Product P
ORDER BY CASE WHEN @OrderBy='Price ASC' THEN
(case A.Price WHEN 0 THEN 1 ELSE 0 END,A.Price )
END ASC
Run Code Online (Sandbox Code Playgroud)
我感谢任何帮助
我在下面有sql,想要多个ORDER BY.
SELECT
r.*,
s.uzunluq,
b.id,
au.status_id as aksessuar_status,
au.aksessuar_id,
au.aksessuar
FROM
seksiya s,
result r
LEFT JOIN bosh_seksiya_aksessuar b
ON
b.bosh_seksiya = r.model AND
b.ERK = :ses
LEFT JOIN aksessuar_up au
ON au.model_id = r.res_id AND
au.user_id = :user_id AND
au.status_id = 9
WHERE
r.user_id = :user_id AND
r.model=s.seksiya AND
s.erk = :ses AND
r.status_id IN (1,2,3,4,5)
ORDER BY
r.res_id
Run Code Online (Sandbox Code Playgroud)
我想写php PDO对你来说并不重要,伙计们,这个问题只引起我的问题.这个sql工作得很好,我只是想添加额外的功能.所以,看看这个专栏:r.status_id IN (1,2,3,4,5)
我给了 Order BY r.res_id
我的问题:我想为每个使用多个ORDER status_id
如何订购:
ORDER BY r.res_id DESC WHERE r.status_id IN …
假设我有这个表:( c是父母的孩子p)
c p
------
40 0
2 3
2 40
3 1
7 2
1 0
Run Code Online (Sandbox Code Playgroud)
Where(0表示root) - 我希望select的顺序显示为:
c b
------
1 0
3 1
2 3
40 0
2 40
7 2
Run Code Online (Sandbox Code Playgroud)
这是因为我们有2根(1,40)和1 <40.
所以我们从1它开始然后显示在它下面 - 所有它的后代.
然后我们到了40.同样的逻辑.
题:
我该怎么做 ?
我成功地以递归方式显示它+找到层次结构级别*(不确定它是否有帮助)*
WITH cte(c, p) AS (
SELECT 40, 0 UNION ALL
SELECT 2,3 UNION ALL
SELECT 2,40 UNION ALL
SELECT 3,1 UNION ALL
SELECT 7,2 UNION ALL …Run Code Online (Sandbox Code Playgroud) 我有一个为客户提供的模型以及他们的购买/订单模型.在我们的后端/网络管理员中,我们希望能够按最近的订单对客户列表进行排序.
这基本上就是我们模型的样子
class Customer(models.Model):
username = models.CharField(max_length=32)
first_name = models.CharField(max_length=322)
def __unicode__(self):
return "%s" % self.username
def get_last_order_date(self):
self.order_set.latest('purchase_date')
class Order(models.Model):
customer = models.ForeignKey(Customer)
purchase_date = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)
我可以使用我的get_last_order_date函数显示每个客户的最新订单,但是我不能按该函数排序(或者至少我不知道如何).我已经尝试了我能想到的一切:
.order_by('order__purchase_date')
.order_by('order__set').latest('purchase_date')
Run Code Online (Sandbox Code Playgroud)
还有更多,没有运气.
任何提示或线索将非常感激.
谢谢.
我有一个MySQL表:
CREATE TABLE mytable (
id INT NOT NULL AUTO_INCREMENT,
other_id INT NOT NULL,
expiration_datetime DATETIME,
score INT,
PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)
我需要以下列形式运行查询:
SELECT * FROM mytable
WHERE other_id=1 AND expiration_datetime > NOW()
ORDER BY score LIMIT 10
Run Code Online (Sandbox Code Playgroud)
如果我将此索引添加到mytable:
CREATE INDEX order_by_index
ON mytable ( other_id, expiration_datetime, score);
Run Code Online (Sandbox Code Playgroud)
MySQL能否order_by_index在上面的查询中使用整个?
现在看来似乎应该是可以的,但后来根据MySQL的文档:" 该指数还可以用来即使ORDER BY不索引完全一致,只要所有索引的未使用部分和所有的额外ORDER BY列是WHERE子句中的常量. "
上面的段落似乎表明索引只能用于常量查询,而我的是范围查询.
任何人都可以澄清在这种情况下是否会使用索引?如果没有,我可以用任何方式强制使用索引吗?
谢谢.
可以根据特定订单在Linq上订购吗?就像是
List<bbHeader> bb = new List<bbHeader>();
bb.OrderBy(x => x.Country.CompareTo(new string[]{"AR","CL","PY","UY","AUP"}));
Run Code Online (Sandbox Code Playgroud)
我们的想法是根据字符串的特定顺序对Country字段进行排序
我有一个查询,我需要根据查询字符串参数进行ordeby.例如,如果sortby参数是价格,Query需要随价格变化.如果其评级比更改查询按评级排序.
我知道PredicateBuilder可以做And和OR的东西,但我如何进行动态ordeby linq查询.
我有一个mysql语句
SELECT *
FROM tbl_messages
WHERE to_user_id = '$user_id' OR from_user_id = '$user_id'
GROUP BY from_user_id
ORDER BY date_sent DESC
Run Code Online (Sandbox Code Playgroud)
并且它产生了正确的结果,但它们的顺序不正确.
分组效果很好,但是组中显示的记录是第一个记录在数据库中的记录,但我希望在每个组中显示最新记录.
有没有办法为每个组显示最新记录?
2011-12-19 12:16:25 This is the first message
2011-12-19 12:18:20 This is the second message
2011-12-19 12:43:04 This is the third message
Run Code Online (Sandbox Code Playgroud)
该组显示"这是第一条消息",我希望"这是第三条消息",因为这是最新的记录/消息.
干杯
sql-order-by ×10
mysql ×3
c# ×2
group-by ×2
linq ×2
sql ×2
.net ×1
django ×1
indexing ×1
linq-to-sql ×1
nhibernate ×1
select ×1
sorting ×1
sql-server ×1
subquery ×1
t-sql ×1