两个值在两个字段中任意取整


Two values either way round in two fields

我有一个名为"friends"的表,其中包含列person1person2。我使用PHP来检查用户是否与某人是朋友。我想做一个查询,看看是否:

  • person1是Bob,person2是Jim
  • person1是Jim,person2是Bob

换句话说,我想检查他们是否都在同一行。不是吉姆和其他人在一起,也不是鲍勃和其他人一起。一定是鲍勃和吉姆在同一排。我将使用哪个查询来获取行?我想的是:

SELECT person1, person2 FROM friends WHERE (person1=Jim AND person2=Bob) OR (person1=Bob AND person2=Jim)

当然,这在SQL中不起作用,但我正在寻找类似的东西。我不想在桌子上重复友谊。任何帮助都将不胜感激!

要消除重复项(带有Jim/Bob的行和带有Bob/Jim的'duplicate'),您需要添加一个case语句:

SELECT CASE WHEN person1 = 'Jim' 
     THEN person1 
     ELSE person2 END AS person1Derivation,
CASE WHEN person2 = 'Bob'
     THEN person2
     ELSE person1 END AS person2Derivation
FROM friends
WHERE (person1 = 'Jim' and person2 = 'Bob') or (person1 = 'Bob' and person2 = 'Jim')