gpt4 book ai didi

php - 多选和mysql查询

转载 作者:行者123 更新时间:2023-11-30 22:48:32 26 4
gpt4 key购买 nike

我在搜索器中工作。我有一个包含语言的多选表单,在 MySQL 数据库中,我有一个名为 USERS 的表,其中包含网站上注册的所有用户,还有一个名为 USERS_LANGUAGES 的表,其中包含用户在其个人资料中选择的语言。

因此,我需要查询来获取使用多选中选择的所有语言的用户。

我的第一个选择是:

SELECT u.id FROM users u INNER JOIN users_languages ul ON u.id=ul.id_user AND ul.id_language IN ($multiselect options separated by comma)

但是这个查询显示的是知道部分语言的用户,而不是所有这些语言。

我的第二个选择是做一个循环并为每种语言添加一个 INNER JOIN,如下所示:

SELECT id FROM users u INNER JOIN users_languages ul_1 ON u.id=ul_1.id_user AND ul_1.id_language = 1 INNER JOIN user_languages ul_2 ON u.id=ul_2.id_user AND ul_2.id_language = 2 ...

此查询有效,但我想知道是否有更简单的查询来执行此操作。

最佳答案

因此,以@CBroes 评论为基础:(我以 IN 子句为例)

SELECT u.id 
FROM users u
INNER JOIN users_languages ul
ON u.id=ul.id_user
AND ul.id_language
IN ("English", "Spanish", "French", "German")
HAVING COUNT(distinct ul.id_language) = 4

所以,就像你说的,如果你匹配:

("English", "Spanish", "French", "Arabic")

即阿拉伯语而不是德语,不同的计数将是 3,而不是 4,因此,它不会出现在您的结果集中。所以你每次都必须发送计数子句中的数字。

关于php - 多选和mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28852360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com