mysql - 连接两个表,按两个不同的列输入和排序

标签 mysql

我有两个表:

bsl_prioritas_perasat                 rek_perasat
+=========+========+=====+            +=======+==========+======+
|RUPER    |CODE    |SORT |            |CODE   |NAME      |SUB   |
+=========+========+=====+            +=======+==========+======+
|CB2RA    |R0004   |1    |            |R0004  |JASA 1    |AKA   |
|CB2RA    |R0006   |2    |            |R0006  |JASA 2    |AKB   |
|CB3RI    |R0006   |1    |            |R0008  |JASA VK   |VK    |
|CB3RI    |R0008   |2    |            |R0026  |ACCOMT    |AKOM  |
+=========+========+=====+            +=======+==========+======+

输入将为RUPERSUB

如果bsl_prioritas_perasat上存在RUPER,那么它将按SORTNAME排序,并且如果 bsl_prioritas_perasat 上的 RUPER 的 >CODE 不存在/NULL,它将放在最后

如果RUPER不存在,它将忽略SORT并按NAME排序

示例:

1st                    2nd                    3rd
RUPER=CB2RA, SUB=AK    RUPER=CB3RI, SUB=AK    RUPER=CB5DB, SUB=AK
Result:                Result:                Result:
+==========+           +==========+           +==========+
|NAME      |           |NAME      |           |NAME      |
+==========+           +==========+           +==========+
|JASA 1    |           |JASA 2    |           |ACCOMT    |
|JASA 2    |           |ACCOMT    |           |JASA 1    |
|ACCOMT    |           |JASA 1    |           |JASA 2    |
+==========+           +==========+           +==========+

我怎样才能得到这个结果?

最佳答案

您应该能够将 LEFT JOINIFNULL 和默认排序值一起使用,例如:

SELECT name, sort
FROM (SELECT r.NAME, IFNULL(b.SORT, 100),
  FROM rek_perasat AS r LEFT JOIN bsl_prioritas_perasat AS b
    ON r.CODE = b.CODE AND b.RUPER = ?
  WHERE r.SUB LIKE ? + '%');

更新:添加了子选择。

关于mysql - 连接两个表,按两个不同的列输入和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421814/

相关文章:

mysql - 如何在mysql中的计算中使用别名,而不需要多行

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - 选择带有索引的列名

php - Mysql操作超时错误

MySQL 查询等效于 "AND",而 "IN"是 "OR"?

mysql - 由于内存限制,无法通过隧道连接到 vmc mysql 服务

php - 插入期间最小化 autoinc id 间隙,如何?

mysql - 为什么 Myisam 的读取速度(moSTLy 读取应用程序)和简单查询速度更快?

mysql - 如果表 B 中的 XYZ 列(校验和)发生更改,则从表 B 更新表 A 中的记录

php - 连接所有表时删除多个表中的数据 php laravel