【发布时间】:2013-05-14 09:00:04
【问题描述】:
我在思考一个 SQL 查询时遇到了麻烦,试图找出一些东西。
很快,这是我的(简单)表格: 它是在社交网站中添加的朋友的代表。 我必须使用这样的表格格式,user1和user2都是主键。
User1 | User2
--------------------------------------
foo@a.com | things@stuff.com
foo@a.com | lala@hi.com
things@stuff.com| lol@k.com
lol@k.com | foo@a.com
foo@a.com | lol@k.com
我需要做的是编写一个 SELECT 语句,该语句将返回所有与 foo@a.com 成为朋友的唯一用户。
SELECT User2
FROM members
WHERE User1 = 'things@stuff.com'
将返回 lol@k.com 而不是 foo@a.com,即使我需要它来返回后者。
SELECT *
FROM members
WHERE User1 = 'foo@a.com'
OR User2 = 'foo@a.com'
我认为会返回错误吗?可能会选择多列。
所以我认为联合加入或其他一些加入是必要的(联合所以没有重复?)但我真的不知道如何去做。
我正在尝试在 PHP 中实现这一点,所以即使我写的最后一个查询有效,我不确定如何根据返回的 User1 或 User2 来回显/如果有意义的话我需要哪个。
【问题讨论】:
-
你用 SQL 检查两列应该没问题(除了朋友可能不是唯一的,具体取决于数据)。尽管您可能可以将其拆分为 2 个查询,每列一个,合并在一起,但只是出于性能原因(允许两者都使用索引)