相关疑难解决方法(0)

具有多个LIMITS的MySQL查询

假设我的下表中有数百种不同颜色的玩具......

---------------------------
  ITEM  |  COST  |  COLOR
---------------------------
    1   |  12.00 |  BLUE
    2   |  10.98 |  RED
    3   |   9.34 |  BLUE
    4   |  11.33 |  WHITE
    5   |   8.00 |  YELLOW
    .   |    .   |    .
    .   |    .   |    .
    .   |    .   |    .
Run Code Online (Sandbox Code Playgroud)

如果我想选择三个价格最低的蓝色玩具,我当然可以写...

SELECT * FROM TOYS WHERE Color = 'BLUE' ORDER BY COST LIMIT 3;
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法可以选择一个具有独特数量的最低价黄色,白色和蓝色玩具,就像我说的那样......

 SELECT * FROM TOYS WHERE COLOR = 'YELLOW' (LIMIT 1) AND COLOR = 'WHITE' (LIMIT 3) AND …
Run Code Online (Sandbox Code Playgroud)

mysql select limit

5
推荐指数
1
解决办法
6153
查看次数

在MYSQL查询中获取行位置

可能重复:
MySQL中的ROW_NUMBER()

这可能吗?我希望以特定顺序获得一堆结果,然后通过其id找出行的位置,例如:

1, foo
2, bar
3, foobar
Run Code Online (Sandbox Code Playgroud)

我想按字母顺序获得1的位置,它将返回2

mysql sql

5
推荐指数
1
解决办法
2万
查看次数

检索每个用户的最新条目

如果我有一个包含以下结构和数据的表:

id | user_id | created_at
-------------------------
 1 |       7 |    0091942
 2 |       3 |    0000014
 3 |       6 |    0000890
 4 |       6 |    0029249
 5 |       7 |    0000049
 6 |       3 |    0005440
 7 |       9 |    0010108
Run Code Online (Sandbox Code Playgroud)

我将使用什么查询来获得以下结果(以下说明):

id | user_id | created_at
-------------------------
 1 |       7 |    0091942
 6 |       3 |    0005440
 4 |       6 |    0029249
 7 |       9 |    0010108
Run Code Online (Sandbox Code Playgroud)

如你看到的:

  • 每个user_id只返回一行.
  • 最高的行created_at是返回的行.

有没有办法在使用子查询的情况下 …

mysql sql

3
推荐指数
1
解决办法
176
查看次数

如何将行号列添加到 SqlAlchemy 查询?

我想将行号作为我的查询列。由于我使用的是 MySql,我无法使用func.row_number()SqlAlchemy的内置功能。此查询的结果将被分页,因此我想在拆分发生之前保留行号。

session.query(MyModel.id, MyModel.date, "row_number")
Run Code Online (Sandbox Code Playgroud)

我尝试使用 anhybrid_property来增加MyModel我在查询之前重置的类内部的静态变量,但它没有用。

@hybrid_property
def row_number(self):
    cls = self.__class__
    cls.row_index = cls.row_index + 1
    return literal(self.row_index)

@row_number.expression
def row_number(cls):
    cls.row_index = cls.row_index + 1
    return literal(cls.row_index)
Run Code Online (Sandbox Code Playgroud)

我还尝试将子查询与此解决方案混合使用:

 session.query(myquery.subquery(), literal("@rownum := @rownum + 1 AS row_number"))
Run Code Online (Sandbox Code Playgroud)

但是我没有找到一种方法来为(SELECT @rownum := 0) r.

有什么建议?

编辑

目前,我正在循环分页查询的结果,并将从当前页面计算出的数字分配给每一行。

python mysql sqlalchemy

3
推荐指数
1
解决办法
2915
查看次数

分区不工作

在此处输入图片说明

我想创建带有子菜单的菜单。因此,我需要做的就是显示menu_cat为主菜单(不重复),同时menu作为相关menu_cat.

像 DISTINCT 和 GROUP BY 这样的子句似乎适用于整行。由于我的搜索,我发现了这个链接:DISTINCT for only one Column

这正是我想要做的。但是我收到错误。以下是我的查询和 Phpmyadmin 错误。请帮我解决这个错误。

$query = "Select * FROM ('SELECT menu_cat,menu,manu_href,ROW_NUMBER() OVER(PARTITION BY menu_cat ORDER BY menu_id DESC) rn FROM menu')a WHERE rn = 1";
Run Code Online (Sandbox Code Playgroud)

错误:

#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“SELECT menu_cat,menu,manu_href,ROW_NUMBER() OVER(PARTITION BY menu_cat ORDER BY”附近使用正确的语法

$query2 = "select menu_cat OVER (PARTITION BY menu_id) AS Cat,menu,menu_href from menu"
Run Code Online (Sandbox Code Playgroud)

错误:

#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“(PARTITION …

php mysql

3
推荐指数
1
解决办法
6634
查看次数

SQL - 对表中的列数据进行排序

我有一个包含3个字段的表:

CUST_ORDER  FULFILL_NO  ITEM  LOCATION
   SA23        1        0233    11001
   SA23        1        0243    13001
   SA23        1        0513    14001
   SA88        1        0873    15001
   SA88        1        0533    17001
Run Code Online (Sandbox Code Playgroud)

我想对fulfill_no字段进行排序,以便数据变为:

CUST_ORDER  FULFILL_NO  ITEM  LOCATION
   SA23        1        0233    11001
   SA23        2        0243    13001
   SA23        3        0513    14001
   SA88        1        0873    15001
   SA88        2        0533    17001
Run Code Online (Sandbox Code Playgroud)

怎么做 ?

sql oracle sequence

0
推荐指数
1
解决办法
62
查看次数

标签 统计

mysql ×5

sql ×3

limit ×1

oracle ×1

php ×1

python ×1

select ×1

sequence ×1

sqlalchemy ×1