sql - 复杂的 MySQL Order by 不工作

标签 sql mysql

这是我正在使用的选择语句。排序时会出现问题。当它像下面这样时,它只按 t2.userdb_user_first_name 排序,不管我把它放在第一位还是第二位。当我删除它时,它按 displayorder 字段值对排序得很好。所以我知道那部分工作正常,但不知何故,两者的结合导致 first_name 覆盖它。我想要的是首先按显示顺序对记录进行排序,然后是其中的 first_name

SELECT t1.userdb_id
FROM default_en_userdbelements as t1
  INNER JOIN default_en_userdb AS t2 ON t1.userdb_id = t2.userdb_id
WHERE t1.userdbelements_field_name = 'newproject'
  AND t1.userdbelements_field_value = 'no'
  AND t2.userdb_user_first_name!='Default'
ORDER BY
  (t1.userdbelements_field_name = 'displayorder' AND t1.userdbelements_field_value),
  t2.userdb_user_first_name;

编辑:这是我想要完成的。我想列出 userdb 表中的用户(不是新项目),以及有关存储在 userdbelements 中的用户的详细信息。我希望首先按 userdbelements.displayorder 排序,然后按 userdb.first_name 排序。我希望这是有道理的?感谢您的快速帮助!

编辑:抱歉消失了,这里是一些示例数据

用户元素

userdbelements_id   userdbelements_field_name   userdbelements_field_value  userdb_id
647 heat        1
648 displayorder    1 - Sponsored   1
645 condofees       1

用户数据库

userdb_id   userdb_user_name    userdb_emailaddress userdb_user_first_name  userdb_user_last_name
10  harbourlights   info@harbourlightscondosminium.ca   Harbourlights   1237 Northshore Blvd, Burlington
11  harbourview info@harbourviewcondominium.ca  Harbourview 415 Locust Street, Burlington
12  thebalmoral info@thebalmoralcondominium.ca  The Balmoral    2075 & 2085 Amherst Heights Drive, Burlington

最佳答案

您正在尝试使用无效的 ORDER BY。

ORDER BY (t1.userdbelements_field_name = 'displayorder' AND t1.userdbelements_field_value)

它必须引用表列或返回的别名列。

我真的无法理解这个查询是如何可能的,因为你已经限制了 t1.userdbelements_field_name = newproject 然后您希望按等于 displayorder 的情况进行排序。

能否请您修改您的问题以准确说明您在 order by 子句中试图完成的是什么?

关于sql - 复杂的 MySQL Order by 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859837/

相关文章:

php - 从数据库中为每个用户 ID 删除除最后 15 条之外的所有条目

mysql - 如何建模具有传递依赖的关联?

mysql - MySQL : How to make a trigger that inserts data to another table

mysql - MySQL 的 LIMIT 关键字是否保证返回数据的顺序?

mysql - 三重内连接保留标题

python - Django 中的完整性错误,其中项目有两个用户表?

sql - PostgreSQL 检查约束是否相关列可为空

php - 从 mysql 表中检索所有行,但首先将它们分组以删除重复

java - MySql数据库访问JDBC驱动

php - 我对 MySQL 插入是否成功的测试不起作用