mysql - 不同的 MySQL 结果

标签 mysql distinct

我有以下 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/

相关文章:

php - 如何连接从数据库收到的 php 中的时间戳?

php - 尝试使用php访问远程数据库

php - 在数组中使用 TwitterOAuth

r - 根据 `r` 中具有反向字符串值的两列过滤不同的值

mysql - 如何使用 DISTINCT 选择行的其余部分?

mysql - 如何生成 MySQL 过程以获取以 1 个月递增的日期范围到结束日期之间的日期

mysql - SQL/PHP - 查找特定项目总和的平均值

c# - 在 C# 中创建不同的列表

mysql - 选择 MySQL 中特定列的匹配行数

sql - 使用 PostgreSQL 删除行重复并获得最高值