从一个mysql表(朋友)中选择并按另一个表(用户)中的字段排序结果?

时间:2010-10-27 03:55:56

标签: mysql

我如何从一个mysql表(朋友)中选择并按照另一个表(用户)中的字段排序结果?

表格设置如下:

CREATE TABLE `users` (
  `id` int(12) NOT NULL auto_increment,
  `first_name` varchar(100) NOT NULL default '',
  `last_name` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;

CREATE TABLE `friends` (
  `id` int(12) NOT NULL auto_increment,
  `user_id` int(2),
  `mutual` int(2) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;

基本上我需要做的是从friends表中提取user_ids,将它们与users表匹配并获取用户数据,然后通过以下方式对输出进行排序:

concat(users.first_name, users.last_name) ASC, friends.mutual DESC

5 个答案:

答案 0 :(得分:2)

您可以使用JOIN来实现此目标。

  SELECT * 
    FROM friends 
    JOIN users ON friends.user_id = users.id 
    ORDER BY concat(users.first_name, users.last_name) ASC, friends.mutual DESC

答案 1 :(得分:1)

试试这个!我认为它应该有用!

SELECT
friends.user_id, users.*
FROM
friends, users
WHERE
  friends.user_id = users.id
ORDER BY
  concat(users.first_name, users.last_name) ASC, friends.mutual DESC

答案 2 :(得分:0)

选择users.first_name,users.last_name,friends.mutual 来自用户,朋友 users.id = friends.id AND friends.mutual!= 0;

可能有效,或者您可能需要调整它。我没有env给你确切的查询:)

Happy Mysqling:)

- 干杯

答案 3 :(得分:0)

我相信你想要的东西:

SELECT * FROM users
INNER JOIN friends ON users.id=friends.user_id
ORDER BY CONCAT(users.first_name, users.last_name) ASC, friends.mutual DESC

我希望这有帮助!

答案 4 :(得分:0)

使用

select concat(users.first_name,users.last_name) as name,friends.mutual as friends from users 
right join friends on friends.users_id = users.id order by name asc, friends desc

这应该可以胜任。