我有以下 SQL 查询:
从约会事件中选择 c.comid、d.deid d 加入同伴 c ON d.userid = c.userid WHERE c.userid = 5
输出如下:
-------------
comid | deid
-------------
2 | 17
7 | 17
2 | 18
7 | 18
但是我希望它输出的是这样的:
-------------
comid | deid
-------------
2 | 17
7 | 18
我尝试在最后添加 GROUP BY c.comid,它只显示两个结果,但不太准确:
-------------
comid | deid
-------------
2 | 17
2 | 18
我还尝试在 SELECT 之后添加 DISTINCT 关键字,但这没有任何作用。
编辑 - 过帐表结构:
CREATE TABLE IF NOT EXISTS `companions` (
`comid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`userid` int(10) NOT NULL,
`com_name` varchar(60) NOT NULL,
PRIMARY KEY (`comid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
CREATE TABLE IF NOT EXISTS `dating_events` (
`deid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`userid` int(10) unsigned NOT NULL,
`comid` int(10) unsigned NOT NULL,
`de_dateadded` datetime NOT NULL,
PRIMARY KEY (`deid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
最佳答案
这应该是两个单独的查询:
SELECT DISTINCT c.comid
FROM dating_events d JOIN companions c ON d.userid = c.userid
WHERE c.userid = 5;
和
SELECT DISTINCT d.deid
FROM dating_events d JOIN companions c ON d.userid = c.userid
WHERE c.userid = 5;
原因是显然 2/17 和 7/18 不相关,因此将它们放入元组中没有意义。您只有两个单独的数字列表。
关于mysql - 不同的 MySQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810533/