我如何从一个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
答案 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
这应该可以胜任。