MYSQL ORDER BY FIELD来自列表和其他表

时间:2017-06-07 01:48:10

标签: mysql sql-order-by

我在这个问题上长时间不知所措,我不知道如何解决这个问题。

我有2个mysql表

表1

+----+----------------------+
| id | name    | order_list |
+----+----------------------+
|  1 | Bob     |    3       |
|  2 | Marc    |    2       |
|  3 | Edith   |    1       |
|  4 | John    |    4       |
+----+----------------------+

表2

+----+-------------------+
| id | user_id |  sale   |
+----+-------------------+
|  1 |   3     |   30    |
|  2 |   2     |   40    |
|  3 |   1     |   100   |
|  4 |   3     |   75    |
|  5 |   2     |   40    |
|  6 |   1     |   100   |
|  7 |   4     |   75    |
+----+-------------------+

我需要从table2订购ORDER BY来自表2中user_id的表1的order_list。

现在我正在用PHP这样做。 1个查询,通过order_list从表1中获取员工的id。 一个循环 每个员工内部1个查询以获得销售

我需要每个销售独立,而不是总结或分组。

query to get the id from table 1 order by order_list
loop
    query the table2 for the sale of the looped employee
end loop

我知道这可以用这样的东西来完成。

SELECT * FROM table2 ORDER BY FIELD (id,order from table 1)

2 个答案:

答案 0 :(得分:1)

基本join应该足够了:

select t2.*
from table2 t2 join
     table1 t1
     on t2.user_id = t1.id
order by t1.order_list;

或者,如果您愿意,可以在order by

中添加子查询
select t2.*
from table2 t2
order by (select t1.order_list from table1 t1 where t1.id = t2.user_id);

答案 1 :(得分:0)

SELECT a.* FROM table2 a
LEFT JOIN table1 b on a.user_id = b.id 
ORDER BY b.order_list

只需加入它们即可访问2个表中的列。