Mysql 如何根据另一个表中的列和原始表中的列对表中的值进行排序?
我很难找到一个查询,该查询将根据另一个表中的列对我的表进行排序,同时也会根据表本身的列对其进行排序 假设我有两个表,TableAid,name,b_id和TableBid,name。我正在尝试创建一个查询,以便可以按TableB.name和TableA.name顺序输出TableA中的行 例如: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 -----
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;