我在mysql中有一个名为 table1
它有三列 id
, user_id
(外键)和 destination_id
(外键)。一个用户可以有多个目的地。
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]);
我只想从表1中获取所有的用户id,当且仅当特定的用户id包含所有请求的目的地时。
我试着用“in”操作符来实现这个。即
SELECT user_id FROM table1 WHERE destination_id IN ($requestedDestinationsInCommaSeparatedString)
它给出了一行,包括用户标识8和用户标识10,但我只需要用户标识10。我只是想知道关于下列问题的解决方案的概念。我是sql的初学者,任何帮助都是值得赞赏的。谢谢。
2条答案
按热度按时间5w9g7ksd1#
通过对目的地进行分组和计数,可以检查用户标识是否引用了所有请求的目的地。
为此,用户标识和目标标识的字段组合在所有记录中必须是唯一的。
agyaoht72#
我唯一能想到的就是使用多个子选择并在php中构建查询字符串。
因此,对于您的特定示例,生成的sql查询字符串应该是
我认为编程生成中间部分的函数应该不太难。