【发布时间】:2018-08-08 14:12:27
【问题描述】:
我在 MySQL 中有一个名为 table1 的表,其中包含三列 id、user_id(foreign_key) 和 destination_id(foreign_key)。一个用户可以有多个目的地。
E.g Table1
id user_id destination_id
1 10 2
2 5 3
3 10 4
4 10 5
5 9 10
6 5 12
7 8 2
我在 PHP 脚本中收到来自客户端的请求;请求在数组中包含目标 ID。
E.g. $request = array('destination_id' => [2,4,5]);
当且仅当特定的 user_id 包含所有请求的目的地时,我只想从 table1 中获取所有 user_id。
我尝试使用“IN”运算符来实现这一点。 即
SELECT user_id FROM table1 WHERE destination_id IN ($requestedDestinationsInCommaSeparatedString)
它给出了包含 user_id 8 和 user_id 10 的行,但我只需要 user_id 10。我只是想知道关于以下问题的解决方案的概念。我是 SQL 的初学者,任何帮助都会非常明显。谢谢。
【问题讨论】:
-
您最好向我们展示您是如何从该数组创建
$requestedDestinationsInCommaSeparatedString -
在您的情况下,您不能使用 IN,因为 IN 会告诉查询查找适合您提供的任何 destination_id 的任何 user_id。
-
我能否检查一下您的意思是不是真的如果特定的 user_id 包含 所有 请求的目的地
-
看这个,尼拉杰。看起来和你的问题一模一样:stackoverflow.com/questions/15977126/…
-
@RiggsFolly: $requestedDestinationsInCommaSeparatedString 只是表示将请求的目标数组转换为字符串的结果,以便它适合 mysql 中的 IN 运算符。例如:在上面的场景中,它是 $requestedDestinationsInCommaSeparatedString = "2,4,5"。