使用SELECT WHERE IN()时有没有办法保持顺序?例如,使用以下查询:
SELECT id FROM data_table WHERE id IN(56,55,54,1,7);
Run Code Online (Sandbox Code Playgroud)
结果将使用id的默认顺序返回.1,7,54,55,56
当我想保持IN中使用的顺序时:56,55,54,1,7
有没有一种快速的方法在mySQL中执行此操作,或者我将被迫在代码之后对其进行排序.
谢谢 :)
我正在尝试使用ORDER BY子句编写JPQL查询:
query = "SELECT c FROM item ORDER BY c.name ASC"
Run Code Online (Sandbox Code Playgroud)
我想设置一个"order"参数,其值可以是"ASC"或"DESC":
query = "SELECT c FROM item ORDER BY c.name :order"
Run Code Online (Sandbox Code Playgroud)
然后在我的实现中:
query.setParameter("order", "ASC");
Run Code Online (Sandbox Code Playgroud)
这是我收到Hibernate错误的时候:
org.hibernate.HibernateException: Errors in named queries
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么的任何想法?谢谢!
我有以下模型(为了这个问题的目的大大简化):
class Product(models.Model):
price = models.DecimalField(max_digits=8, decimal_places=2)
sale_price = models.DecimalField(max_digits=10, blank=True, null=True, decimal_places=2)
Run Code Online (Sandbox Code Playgroud)
对于大多数产品,价格将被填补,但sale_price将不会.所以,我可以按价格订购产品:
Product.objects.order_by('price')
Product.objects.order_by('-price')
Run Code Online (Sandbox Code Playgroud)
但是,有些产品会有sale_price,我找不到一种方法来整齐地订购这些产品,以便销售价格与正常价格交错.如果我尝试按两个字段排序:
Product.objects.order_by('sale_price','price')
Run Code Online (Sandbox Code Playgroud)
...然后,所有未售出的产品一起显示,然后是所有产品,而不是交叉价格.
这有意义吗?有没有人有办法解决这个问题?
谢谢!
使用VB.net和以下LINQ语句.我怀疑"Order by"不起作用Concat().我想列出用户拥有的当前项目,然后按顺序列出更多可用项目.所以首先我从数据库中选择当前项目,然后按顺序选择下一个可用项目.LINQ忽略了order by语句并按PK排序(这是itemID)我在执行语句后立即检查了列表.当我分解声明并单独执行它们时,它们按预期工作.任何想法,建议或评论.谢谢,PM
(From items In myDatabase.ItemAssignments _
Where items.BuildingID = buildingID _
And items.ResidentID = ResidentID _
Select items).Concat(From moreitems In myDatabase.ItemAssignments _
Where moreitems.occupied = 0 _
And moreitems.BuildingID = buildingID _
Order by moreitems.Floor, moreitems.ItemNumber _
Select moreitems)
Run Code Online (Sandbox Code Playgroud) 这是我的查询
(SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only three doors%" OR `joke` LIKE "%only three doors%") ORDER BY `ups` DESC,`downs` ASC)
UNION
(SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only%" OR `joke` LIKE "%only%") ORDER BY `ups` DESC,`downs` ASC)
UNION
(SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%three%" OR `joke` LIKE "%three%") ORDER BY `ups` DESC,`downs` ASC)
UNION
(SELECT * FROM `jokes` WHERE `flags` < 5 AND …Run Code Online (Sandbox Code Playgroud) 我有这样的情况:
Table1 has a list of companies.
Table2 has a list of addresses.
Table3 is a N relationship of Table1 and Table2, with fields 'begin' and 'end'.
Run Code Online (Sandbox Code Playgroud)
由于公司可能会随着时间的推移而移动,因此其中的LEFT JOIN会为每家公司带来多条记录.
begin和end字段永远不会为NULL.找到最新地址的解决方案是使用a ORDER BY being DESC,并删除旧地址是一个LIMIT 1.
如果查询只能带来一家公司,那该工作正常.但我需要一个查询,它带来所有Table1记录,并与当前的Table2地址相连接.因此,必须在LEFT JOIN的ON子句中删除过时的数据(AFAIK).
知道如何构建条款不创建重复的Table1公司并带来最新地址吗?
postgresql sql-order-by left-join foreign-key-relationship duplicate-removal
是否可以使用预定的顺序执行SELECT语句,即.选择ID 7,2,5,9和8 并按顺序返回它们,仅基于ID字段?
语句SELECT id FROM表WHERE id in(7,2,5,9,8); 和SELECT id FROM表WHERE id in(8,2,5,9,7); 两者都以相同的顺序返回它们.
在我的数据库中,我有一些记录,我按照恰好相同的值进行排序:
| col1 | timestamp |
| row1 | 2011-07-01 00:00:00 |
| row2 | 2011-07-01 00:00:00 |
| row3 | 2011-07-01 00:00:00 |
SELECT ... ORDER BY timestamp
Run Code Online (Sandbox Code Playgroud)
看起来结果是随机顺序.随机顺序是否一致.这意味着如果我在两个mysql服务器中有这些数据.我可以期待相同的结果吗?
我正在使用Drupal 6与MySQL 5.0.95版本,并且陷入僵局,其中我的一个基于最近文章日期显示内容的查询速度变慢,并且由于使用频率导致网站性能完全丧失.有问题的查询如下:
SELECT n.nid,
n.title,
ma.field_article_date_format_value,
ma.field_article_summary_value
FROM node n
INNER JOIN content_type_article ma ON n.nid=ma.nid
INNER JOIN term_node tn ON n.nid=tn.nid
WHERE tn.tid= 153
AND n.status=1
ORDER BY ma.field_article_date_format_value DESC
LIMIT 0, 11;
Run Code Online (Sandbox Code Playgroud)
查询的EXPLAIN显示以下结果:
+----+-------------+-------+--------+--------------------------+---------+---------+----------------------+-------+---------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+--------------------------+---------+---------+----------------------+-------+---------------------------------+
| 1 | SIMPLE | tn | ref | PRIMARY,nid | PRIMARY | 4 | const | 19006 | Using temporary; …Run Code Online (Sandbox Code Playgroud) 我在最近的android项目中使用了ormlite.我想通过查询表中的多个列(比如两列)来排序.我怎么能实现那个?
以下是单个订单的代码......
QueryBuilder<Visit, Integer> qb = getHelper().getVisitDao().queryBuilder();
qb.where().eq("FOREIGN_ID", id);
qb.orderBy("VISIT_DATE", false);
Run Code Online (Sandbox Code Playgroud)