Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何根据另一个表中的列和原始表中的列对表中的值进行排序?_Mysql_Sql_Sqlite_Join - Fatal编程技术网

Mysql 如何根据另一个表中的列和原始表中的列对表中的值进行排序?

Mysql 如何根据另一个表中的列和原始表中的列对表中的值进行排序?,mysql,sql,sqlite,join,Mysql,Sql,Sqlite,Join,我很难找到一个查询,该查询将根据另一个表中的列对我的表进行排序,同时也会根据表本身的列对其进行排序 假设我有两个表,TableAid,name,b_id和TableBid,name。我正在尝试创建一个查询,以便可以按TableB.name和TableA.name顺序输出TableA中的行 例如: TableA ------ 1 A4 11 2 A2 12 3 A3 13 4 A1 11 TableB ------ 11 B1 12 B2 13 B3 Expected Output -----

我很难找到一个查询,该查询将根据另一个表中的列对我的表进行排序,同时也会根据表本身的列对其进行排序

假设我有两个表,TableAid,name,b_id和TableBid,name。我正在尝试创建一个查询,以便可以按TableB.name和TableA.name顺序输出TableA中的行

例如:

TableA
------
1 A4 11
2 A2 12
3 A3 13
4 A1 11

TableB
------
11 B1
12 B2
13 B3

Expected Output
---------------
4 A1 11
1 A4 11
2 A2 12
3 A3 13
要获取按TableB.name排序的行,请执行以下操作:

从表格A中选择*,其中b_id位于从表格b中选择id中

要按TableA.name获取行顺序,请执行以下操作:

从表格中选择*按名称排序

如何将这两个查询组合起来以获得类似上述预期输出的结果?

这是您想要的吗

SELECT a.*
FROM TableA a JOIN
     TableB b
     ON a.b_id = b.id
ORDER BY b.name, a.name;
也就是说,对于问题中的样本,这似乎有效:

select a.*
from tablea a
order by a.b_id, a.name;
表A中的输出行

<> >您可能希望考虑使用左连接来确保表中没有丢失任何行:

SELECT a.*
FROM TableA a LEFT JOIN
     TableB b
     ON a.b_id = b.id
ORDER BY b.name, a.name;
没有order by的SQL查询(例如第一个查询)以任意顺序返回结果。它可能看起来像你想要的,但不能保证。
select a.*
from tablea a
order by a.b_id, a.name;
SELECT a.*
FROM TableA a LEFT JOIN
     TableB b
     ON a.b_id = b.id
ORDER BY b.name, a.name;