【发布时间】:2017-09-25 12:23:51
【问题描述】:
这是查询:
SELECT a.id, a.userName,if(o.userId=1,'C',if(i.userId=1,'I','N')) AS relation
FROM tbl_users AS a
LEFT JOIN tbl_contacts AS o ON a.id = o.contactId
LEFT JOIN tbl_invites AS i ON a.id = i.invitedId
ORDER BY relation
这将返回如下输出:
+----+--------------+-------------+
| ID | USERNAME | RELATION |
+----+--------------+-------------+
| 1 | ray | C |
+----+--------------+-------------+
| 2 | john | I |
+----+--------------+-------------+
| 1 | ray | N |
+----+--------------+-------------+
我需要通过检查 id 是否重复来从选择查询中删除第三行。优先级如下:
C -> I -> N。因此,既然已经有一个带有 C 的“射线”,我不想再用 I 或 N 了。
我尝试添加 distinct(a.id) 但它不起作用。我该怎么做呢?
为什么 DISTINCT 对此不起作用?
【问题讨论】:
-
你想对关系做什么?
1 ray C/NC 和 N 有两种不同的关系。确定要扔掉第三行吗? -
是的,我确定。优先级如下 C -> I -> N。因此,如果有一个具有用户 ID 的 C,那么我不想要一个具有相同用户 ID 的 N
-
你能帮帮我吗?任何建议将不胜感激。
-
研究 MySQL GROUP BY clause.
-
@rams。问题中没有指出,但这是你提出的一个好观点。重新打开并回答问题。