相关疑难解决方法(0)

MySQL - 在select上获取行号

如果项目已排序,我可以运行select语句并获取行号吗?

我有这样一张桌子:

mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field       | Type                | Null | Key | Default | Extra          |
+-------------+---------------------+------+-----+---------+----------------+
| orderID     | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| itemID      | bigint(20) unsigned | NO   |     | NULL    |                |
+-------------+---------------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

然后我可以运行此查询以按ID获取订单数量:

SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
Run Code Online (Sandbox Code Playgroud)

这给了我itemID表中每个的计数如下:

+--------+------------+
| itemID | ordercount |
+--------+------------+
|    388 |          3 |
|    234 | …
Run Code Online (Sandbox Code Playgroud)

mysql sql row-number

176
推荐指数
5
解决办法
34万
查看次数

MySQL中的排名功能

我需要找出客户的排名.在这里,我为我的要求添加了相应的ANSI标准SQL查询.请帮我转换为MySQL.

SELECT RANK() OVER (PARTITION BY Gender ORDER BY Age) AS [Partition by Gender], 
  FirstName, 
  Age,
  Gender 
FROM Person
Run Code Online (Sandbox Code Playgroud)

有没有找到MySQL排名的函数?

mysql sql rank

149
推荐指数
8
解决办法
24万
查看次数

你如何在MySQL中使用"WITH"子句?

我正在将我的所有SQL Server查询转换为MySQL,并且我的查询WITH都失败了.这是一个例子:

WITH t1 AS
(
     SELECT article.*, userinfo.*, category.*
     FROM question
     INNER JOIN userinfo ON userinfo.user_userid = article.article_ownerid
     INNER JOIN category ON article.article_categoryid = category.catid
     WHERE article.article_isdeleted = 0
)
SELECT t1.*
FROM t1
ORDER BY t1.article_date DESC
LIMIT 1, 3
Run Code Online (Sandbox Code Playgroud)

mysql common-table-expression with-clause subquery-factoring mysql-8.0

100
推荐指数
5
解决办法
19万
查看次数

MySQL在ORDER BY中获取行位置

使用以下MySQL表:

+-----------------------------+
+ id INT UNSIGNED             +
+ name VARCHAR(100)           +
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

如何排序时,如何选择单个行及其在表中其他行中的位置name ASC.因此,如果表数据如下所示,则按名称排序时:

+-----------------------------+
+ id | name                   +
+-----------------------------+
+  5 | Alpha                  +
+  7 | Beta                   +
+  3 | Delta                  +
+ .....                       +
+  1 | Zed                    +
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

如何选择Beta获取该行当前位置的行?我正在寻找的结果集是这样的:

+-----------------------------+
+ id | position | name        +
+-----------------------------+
+  7 |        2 | Beta        +
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

我可以做一个简单的SELECT * FROM tbl ORDER BY name ASC然后枚举PHP中的行,但是为一行加载一个可能很大的结果集似乎很浪费.

mysql sql analytic-functions

77
推荐指数
4
解决办法
8万
查看次数

Mysql选择不同

我试图选择mysql表中的重复行它对我来说工作正常,但问题是它不允许我选择该查询中的所有字段,只是让我选择我用作不同的字段名称,lemme写入查询更好的下划线

mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")

mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
Run Code Online (Sandbox Code Playgroud)

第一个工作正常

现在,当我试图选择所有字段时,我最终会出现错误

我试图选择最新的重复项,让我们说,ticket_id 127在行ID 7,8,9上是3次,所以我想选择一次最新的条目,在这种情况下为9,这适用于所有其余的ticket_id的

不知道谢谢

mysql select greatest-n-per-group

33
推荐指数
3
解决办法
11万
查看次数

没有@Id的休眠/持久化

我有一个数据库视图,产生一个没有真正主键的结果集.我想使用Hibernate/Persistence将此结果集映射到Java对象.当然,因为没有PK,我无法用任何字段装饰@Id.

在部署时,Hibernate抱怨失踪@Id.我该如何解决这个问题?

java hibernate primary-key hibernate-annotations

31
推荐指数
3
解决办法
5万
查看次数

如何选择每个类别的最新四个项目?

我有一个项目数据库.每个项目都使用类别表中的类别ID进行分类.我正在尝试创建一个列出每个类别的页面,在每个类别下面我想要显示该类别中的4个最新项目.

例如:

宠物用品

img1
img2
img3
img4
Run Code Online (Sandbox Code Playgroud)

宠物食品

img1
img2
img3
img4
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过查询每个类别的数据库轻松解决这个问题,如下所示:

SELECT id FROM category

然后迭代该数据并查询每个类别的数据库以获取最新的项目:

SELECT image FROM item where category_id = :category_id 
ORDER BY date_listed DESC LIMIT 4

我想弄清楚的是,如果我可以使用1个查询并获取所有数据.我有33个类别,所以我想也许这有助于减少对数据库的调用次数.

任何人都知道这是否可行?或者,如果33次通话不是那么大,我应该这么简单.

mysql sql greatest-n-per-group

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

手动指定Row_Number()的起始值

我想定义ROW_NUMBER()as 的开头3258170而不是1.

我正在使用以下SQL查询

SELECT ROW_NUMBER() over(order by (select 3258170))  as 'idd'.
Run Code Online (Sandbox Code Playgroud)

但是,上述查询无效.当我说不工作时,我的意思是它的执行,但它不是从它开始3258170.有人能帮助我吗?

我想指定行号的原因是我将Rows从一个表插入另一个表.在第一个表中,最后一个记录的行号是3258169,当我插入新记录时,我希望它们具有行号3258170.

sql sql-server row-number

30
推荐指数
2
解决办法
7万
查看次数

MySQL - 在select中定义一个变量并在同一个select中使用它

有没有可能做这样的事情?

SELECT 
    @z:=SUM(item),
    2*@z
FROM
    TableA;
Run Code Online (Sandbox Code Playgroud)

对于第二列,我总是得到NULL.奇怪的是,在做某事的同时

SELECT 
    @z:=someProcedure(item),
    2*@z
FROM
    TableA;
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.为什么?

mysql variables select procedure mysql-variables

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

简单查询以获取每个ID的最大值

好的,我有一个这样的表:

ID     Signal    Station    OwnerID
111     -120      Home       1
111     -130      Car        1
111     -135      Work       2
222     -98       Home       2
222     -95       Work       1
222     -103      Work       2
Run Code Online (Sandbox Code Playgroud)

这一切都在同一天.我只需要Query来返回每个ID的最大信号:

ID    Signal    Station    OwnerID
111   -120      Home        1
222   -95       Work        1
Run Code Online (Sandbox Code Playgroud)

我尝试使用MAX()和聚合混乱,每个记录的Station和OwnerID都不同.我需要加入吗?

sql sql-server max greatest-n-per-group

19
推荐指数
2
解决办法
4万
查看次数