我遇到了mysql查询的麻烦。我想得到一个唯一的名称共享tenant_group_id号码的配对。您只需要知道每个承租人都有唯一的individual_tenant_id,最多两个单独的承租人共享相同的tenant_group_id。MySQL选择名称的唯一配对
SELECT t1.first_name, t2.first_name
FROM individualtenant t1
LEFT JOIN individualtenant t2 ON t1.tenant_group_id = t2.tenant_group_id
AND t1.individual_tenant_id != t2.individual_tenant_id
眼下这是给我,但对两种方式,例如,它会返回“约翰”,“梅利莎”和“梅利莎”,“约翰”,但我只需要一个独特的配对。
编辑:如果个人中药没有合作伙伴,我需要在第二列有NULL。
大获成功!现在,如果我想计算这些配对,那该怎么办?似乎你不能用COUNT()包装GROUP_CONCAT(first_name),我怎么做第二个。还有什么是将这两个名称连接成一个分隔空间的好方法? (对不起所有请求) – MCH 2010-08-05 21:46:34
第一个,如果你想计算结果中的成员数量,你只需要第二列'COUNT(*)'(或任何特定的唯一字段)。我不建议用空格分隔名称,因为这可能是名称的合法内容,我建议选择一个不可打印字符的“SEPARATOR”(请查看“group_concat”工作原理的手册),所以它或多或少不会出现在'first_name'列中,除非出现一些输入错误。但请注意这是'hackish':仔细选择你的分隔符,并始终保持警惕/可疑。 – Wrikken 2010-08-06 22:05:14