Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两个值在两个字段中任意循环_Php_Mysql_Sql_Select - Fatal编程技术网

Php 两个值在两个字段中任意循环

Php 两个值在两个字段中任意循环,php,mysql,sql,select,Php,Mysql,Sql,Select,我有一个名为“friends”的表,其中包含列person1和person2。 我正在使用PHP检查用户是否与某人是朋友。我想做一个查询,看看是否: person1是鲍勃,person2是吉姆 person1是吉姆,person2是鲍勃 换句话说,我想检查他们是否都在同一行。不是吉姆和别人在一起,也不是鲍勃和别人在一起。 一定是鲍勃和吉姆在同一排。我将使用什么查询来获取行?我的想法大致如下: SELECT person1, person2 FROM friends WHERE (person

我有一个名为“friends”的表,其中包含列
person1
person2
。 我正在使用PHP检查用户是否与某人是朋友。我想做一个查询,看看是否:

  • person1
    是鲍勃,
    person2
    是吉姆
  • person1
    是吉姆,
    person2
    是鲍勃
换句话说,我想检查他们是否都在同一行。不是吉姆和别人在一起,也不是鲍勃和别人在一起。 一定是鲍勃和吉姆在同一排。我将使用什么查询来获取行?我的想法大致如下:

SELECT person1, person2 FROM friends WHERE (person1=Jim AND person2=Bob) OR (person1=Bob AND person2=Jim)
当然,这在SQL中不起作用,但我正在寻找类似的东西。我不希望桌上有重复的友谊。 任何帮助都将不胜感激

要消除重复项(包含Jim/Bob的行和包含Bob/Jim的“重复项”),您需要添加一个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')

除了你的字符串不在引号中之外,为什么它不起作用呢?啊!我没有尝试,我以为我只是在写伪代码,不知道MySQL能做到这一点;谢谢,我想。