php - 一个mysql多表查询的问题
PHP中文网
PHP中文网 2017-04-10 14:45:05
[PHP讨论组]

求问一个数据库问题。 user表有一个real_name字段,表示用户姓名。plag表有两个字段 user_id1, user_id2, 现在要查询plag表中的所有信息,同时把user_id1, user_id2对应user表中的real_name也输出出来。怎么写sql?

比如: user表用两条记录:
id: 1 real_name: Tom
id: 2 real_name: Mike

plag表有这样一条记录
id: 1 user_id1: 1 user_id2: 2

我希望能把plag以这样的形式输出:
id: 1 name1: Tom name2: Mike

求大神给出sql并解释

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
黄舟
select plag.id, group_concat(user.name order by user.id) as real_names from plag left join user on plag.user_id1 = user.id or plag.user_id2 = user.id 

这句虽然输出有点出入,但是应该也符合题主的需求,输出结果应该为:

id | realnames
1 | Tom,Mike 

得到的 realnames 是以 user.id 按序排列的,结果集是可操作的。
下面这句可以得到楼主希望的输出:

select plag.id,(select user.name from plag inner join user on user.id = plag.user_id1) as name1, (select user.name from plag inner join user on user.id = plag.user_id2) as name2 from plag

输出应该为:

id | name1 | name2
1 | Tom | Mike
怪我咯

应该使用 INNER JOIN 方式吧

参考 http://www.w3school.com.cn/sql/sql_join_inner.asp

PHPz
select p.id, u1.real_name as name1, u2.real_name as name2
from plag p, user as u1, user as u2
where p.user_id1 = u1.id and p.user_id2 = u2.id;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号