提问人:Steve Geggie 提问时间:10/7/2021 最后编辑:Steve Geggie 更新时间:10/8/2021 访问量:46
如何在mySQL中的组内进行排序(在workBench中工作,而不是在NodeJS中工作)
How can I sequence within a group in mySQL (works in workBench not in NodeJS)
问:
我有一个查询,可以在 mySQL workBench 中正确排序,但在 NodeJS 中不能针对同一数据库进行排序。
查询:
SELECT
users.userId,
users.firstName,
users.middleName,
users.lastName,
users.address,
users.address2,
users.city,
users.stateProvince,
users.postalCode,
users.country,
users.email,
users.mobilePhone,
users.altPhone,
users.ataId,
users.pitaId,
users.nssaId,
users.nscaId,
users.active,
@seq := IF(@saveUserId = user2, @seq + 1, 0) as seq,
permissionsPlus.entityId,
permissionsPlus.entityName,
permissionsPlus.entityTypeId,
permissionsPlus.entityTypeName,
permissionsPlus.permissionSettings,
permissionsPlus.roleId,
permissionsPlus.roleName,
permissionsPlus.userPermissionId,
@saveUserId := permissionsPlus.user2 as user2
FROM sosclays.users
LEFT JOIN
(SELECT userPermissions.*,
entityTypes.name AS entityTypeName,
IFNULL(sanctioningBodies.name, IFNULL(associations.name, IFNULL(clubs.name, IFNULL(shoots.name, 'App')))) AS entityName,
roles.name AS roleName,
@user2 := userId as user2
FROM userPermissions
LEFT OUTER JOIN sanctioningBodies ON(entityTypeId = 1 AND userPermissions.entityId = sanctioningBodies.sanctioningBodyId)
LEFT OUTER JOIN associations ON(entityTypeId = 2 AND userPermissions.entityId = associations.associationId)
LEFT OUTER JOIN clubs ON(entityTypeId = 3 AND userPermissions.entityId = clubs.clubId)
LEFT OUTER JOIN shoots ON(entityTypeId = 4 AND userPermissions.entityId = shoots.shootId)
LEFT OUTER JOIN entityTypes ON(userPermissions.entityTypeId = entityTypes.entityTypeId)
LEFT OUTER JOIN roles ON(userPermissions.roleId = roles.roleId)
ORDER BY userPermissions.userId ASC) permissionsPlus on(users.userId = permissionsPlus.userId)
ORDER BY users.userId ASC, seq ASC
你能想到为什么它在 Workbench 中工作但在 NodeJS 中不起作用的原因吗?我如何最好地解决这个问题或使用替代方法?
从本质上讲,我正在为从查询的 permissionsPlus 部分提取的许多权限中的每一个寻找一个从 0 开始的序列号。
在mySQL工作台中,我看到用户E7skP0IncSW7wkBxnrYFx6udzGH2的以下正确序列(第三行,seq列)
在 NodeJS 中,seq 列值始终为 0。此外 - 使用 PHPMYAdmin 时,seq 列值始终为 0。
答:
0赞
Steve Geggie
10/8/2021
#1
溶液:
SET @seq = 0;
SET @saveUserId = '';
SELECT
users.userId,
@seq := IF(@saveUserId = users.userId, @seq + 1, 0) as seq,
permissionsPlus.entityId,
permissionsPlus.entityName,
permissionsPlus.entityTypeId,
permissionsPlus.entityTypeName,
permissionsPlus.permissionSettings,
permissionsPlus.roleId,
permissionsPlus.roleName,
permissionsPlus.userPermissionId,
@saveUserId := users.userId as saveUser
FROM sosclays.users
LEFT JOIN
(SELECT userPermissions.*,
entityTypes.name AS entityTypeName,
IFNULL(sanctioningBodies.name, IFNULL(associations.name, IFNULL(clubs.name, IFNULL(shoots.name, 'App')))) AS entityName,
roles.name AS roleName
FROM userPermissions
LEFT OUTER JOIN sanctioningBodies ON(entityTypeId = 1 AND userPermissions.entityId = sanctioningBodies.sanctioningBodyId)
LEFT OUTER JOIN associations ON(entityTypeId = 2 AND userPermissions.entityId = associations.associationId)
LEFT OUTER JOIN clubs ON(entityTypeId = 3 AND userPermissions.entityId = clubs.clubId)
LEFT OUTER JOIN shoots ON(entityTypeId = 4 AND userPermissions.entityId = shoots.shootId)
LEFT OUTER JOIN entityTypes ON(userPermissions.entityTypeId = entityTypes.entityTypeId)
LEFT OUTER JOIN roles ON(userPermissions.roleId = roles.roleId)
ORDER BY userPermissions.userId ASC) permissionsPlus on(users.userId = permissionsPlus.userId)
ORDER BY users.userId ASC, seq ASC
评论
RANK()