2016-11-30 41 views
1

我必须在数据库中搜索某个表中的某些结果,这些结果在一个表中,但不在另一个表的某个列中。我的查询下面是我到目前为止。不能在mysql查询中有两个where语句

$sql = "SELECT * FROM users WHERE name LIKE '%".$_POST["search"]."%' AND NOT IN 
(SELECT friend FROM friends WHERE user='{$user_name}')"; 

你可以看到我有WHERE,然后我声明它必须搜索的第一个项目。但是,我添加了AND,因此我可以搜索括号内的另一个表格。

什么是我可以做这个动作的最佳方式,而不必更改我的格式?

如果有人有任何问题,请在下面发帖。因此,我可以提高我的问题质量,请在下面张贴我可以改进的任何方式。

+1

使用'和名称NOT IN (SELECT ...)',除此之外你的查询看起来很好。 “保留相同的结果是什么意思?” –

+0

@TimBiegeleisen我不希望结果有所不同。对不起,这是没有解释得很好 – Jackbeeby

回答

2

的问题是不是使用两个WHERE条款,它是不是写:

... WHERE name LIKE '%xxx%' AND NOT IN (...) ... 

你必须写:

... WHERE name LIKE '%xxx%' AND name NOT IN (...) ... 
+0

谢谢,我意识到我离开了。 – Jackbeeby

0
"SELECT * FROM users left join friends on users.name=friends.friend WHERE friends.friend IS NULL AND users.name LIKE '%".$_POST["search"]."%'" 
+1

此代码可能正常工作,但稍好解释一下。 –

相关问题