表联接 我有两个表 A表B表B表有两个字段fromuid 和touid 都关联到A表的uid我想取出B表数据并且fromuid 和touid左联接到A表 请问SQL语句该怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select *from b left joni a on b.fromuid=a.fromuid and b.touid=a.touid 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。 回楼上你可能误会我意思了简化A表(members)结构:uid(int 自增) username(char 30) face(char 20)简化B表(comments)结构:cid(int 自增) fromuid(int) touid(int) content(varchar 1000)我想取出B表数据并且fromuid touid关联到A表的用户信息 贴出你的CREATE TABLE语句,INSERT 语句。 ---- 表的结构 `members`--CREATE TABLE IF NOT EXISTS `members` ( `uid` int(12) NOT NULL AUTO_INCREMENT, `username` char(30) NOT NULL, `face` char(20) NOT NULL, PRIMARY KEY (`uid`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;---- 转存表中的数据 `members`--INSERT INTO `members` (`uid`, `username`, `face`) VALUES(1, 'sky', 'a.jpg'),(2, 'testu', 'b.jpg'),(3, 'smile', 'c.jpg'),(4, 'colorful', 'd.jpg');---- 表的结构 `comments`--CREATE TABLE IF NOT EXISTS `comments` ( `cid` int(11) NOT NULL AUTO_INCREMENT, `fromuid` int(11) NOT NULL DEFAULT '0', `touid` int(11) NOT NULL DEFAULT '0', `content` varchar(1000) NOT NULL, PRIMARY KEY (`cid`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;---- 转存表中的数据 `comments`--INSERT INTO `comments` (`cid`, `fromuid`, `touid`, `content`) VALUES(1, 1, 2, 'aaaaaaaaaaaa'),(2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb');目的是要取出comments表的数据并且fromuid touid联接到members表INSERT INTO `comments` (`cid`, `fromuid`, `touid`, `content`) VALUES(1, 1, 2, 'aaaaaaaaaaaa'),(2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb'); 上面回复最后面的INSERT INTO `comments` (`cid`, `fromuid`, `touid`, `content`) VALUES(1, 1, 2, 'aaaaaaaaaaaa'),(2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb');是笔误 不用看 select *from bwhere fromuid in (select uid from A) 楼主为什么不肯把你期望的结果是什么贴出来? 而是非要让别人来猜?!mysql> select * -> from comments c ,members a,members b -> where c.fromuid=a.uid and c.touid=b.uid;+-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+| cid | fromuid | touid | content | uid | username | face | uid | username | face |+-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+| 1 | 1 | 2 | aaaaaaaaaaaa | 1 | sky | a.jpg | 2 | testu | b.jpg || 2 | 2 | 3 | bbbbbbbbbbbbbbbbbbbbb | 2 | testu | b.jpg | 3 | smile | c.jpg |+-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+2 rows in set (0.05 sec)mysql> 呵呵,提问也有技巧select * from comments a inner join members bon a.fromuid=b.uidinner join members b on a.touid=b.uid; JDBC从MySql中获取中文数据乱码 求助高手,有点复杂的分销系统数据库设计 使用64位mysql Prepared Statements问题 求MYSQL指定字段合计SQL 关于SQL事物请教 如何引用派生表的字段 MySQl 数据库查询问题 mysql同步能不能不那么敏感? mysql控制台中如何清屏 我误删除了 user 表,如果不重新安装的话,如何恢复?用的是linux 请问sqlserver链接服务器调用mysql的存储过程如何写? 【求救】mysql无法访问数据库的问题
from b left joni a on b.fromuid=a.fromuid and b.touid=a.touid
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
你可能误会我意思了
简化A表(members)结构:
uid(int 自增) username(char 30) face(char 20)简化B表(comments)结构:
cid(int 自增) fromuid(int) touid(int) content(varchar 1000)我想取出B表数据并且fromuid touid关联到A表的用户信息
--
-- 表的结构 `members`
--CREATE TABLE IF NOT EXISTS `members` (
`uid` int(12) NOT NULL AUTO_INCREMENT,
`username` char(30) NOT NULL,
`face` char(20) NOT NULL,
PRIMARY KEY (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;--
-- 转存表中的数据 `members`
--INSERT INTO `members` (`uid`, `username`, `face`) VALUES
(1, 'sky', 'a.jpg'),
(2, 'testu', 'b.jpg'),
(3, 'smile', 'c.jpg'),
(4, 'colorful', 'd.jpg');
--
-- 表的结构 `comments`
--CREATE TABLE IF NOT EXISTS `comments` (
`cid` int(11) NOT NULL AUTO_INCREMENT,
`fromuid` int(11) NOT NULL DEFAULT '0',
`touid` int(11) NOT NULL DEFAULT '0',
`content` varchar(1000) NOT NULL,
PRIMARY KEY (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;--
-- 转存表中的数据 `comments`
--INSERT INTO `comments` (`cid`, `fromuid`, `touid`, `content`) VALUES
(1, 1, 2, 'aaaaaaaaaaaa'),
(2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb');目的是要取出comments表的数据并且fromuid touid联接到members表INSERT INTO `comments` (`cid`, `fromuid`, `touid`, `content`) VALUES
(1, 1, 2, 'aaaaaaaaaaaa'),
(2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb');
(1, 1, 2, 'aaaaaaaaaaaa'),
(2, 2, 3, 'bbbbbbbbbbbbbbbbbbbbb');
是笔误 不用看
from b
where fromuid in (select uid from A)
-> from comments c ,members a,members b
-> where c.fromuid=a.uid and c.touid=b.uid;
+-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+
| cid | fromuid | touid | content | uid | username | face | uid | username | face |
+-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+
| 1 | 1 | 2 | aaaaaaaaaaaa | 1 | sky | a.jpg | 2 | testu | b.jpg |
| 2 | 2 | 3 | bbbbbbbbbbbbbbbbbbbbb | 2 | testu | b.jpg | 3 | smile | c.jpg |
+-----+---------+-------+-----------------------+-----+----------+-------+-----+----------+-------+
2 rows in set (0.05 sec)mysql>
select * from comments a inner join members b
on a.fromuid=b.uid
inner join members b on a.touid=b.uid;