gpt4 book ai didi

php - Mysql SELECT 名称,其中具有名称的所有行都具有特定值

转载 作者:行者123 更新时间:2023-11-29 02:17:06 24 4
gpt4 key购买 nike

我将如何编写一个查询来选择一个人的名字(行中的一列),因为他们有足够的行来满足所有条件?

例如,我有一个这样设置的数据库:

name    permission_id
Bob 1
Bob 2
Jerry 3
Jerry 1
Jose 2
Billy 1
Billy 2

我如何只选择具有权限 ID 1 和 2 的人?换句话说,我想要一个查询来检查每个人的名字,看看他们是否拥有请求的所有权限。

在此示例中,如果我要检查所有拥有权限 1 和 2 的用户,我应该将 Bob 和 Billy 作为返回值。

这是我当前的查询:

$this->db->select('center_user_permissions.id, center_users.first_name, center_users.last_name');
$this->db->from('center_user_permissions');
$this->db->where_in('permission_id', $permission_ids);
$this->db->join('center_users', 'center_users.center_id = center_user_permissions.center_id');

目前这个查询返回任何拥有权限 ID 1 或 2 的人。我需要它是 1 和 2。但我知道我不能简单地做两个位置,因为一个特定的行不能同时拥有两个权限 ID,但是查询必须检查指定 ID 的所有行。

我相信我需要在我的 where 中使用 SELECT 语句?谁能告诉我我的想法是否正确?谢谢。

最佳答案

您可以使用 in 子句和 having 来检查用户是否同时拥有这两种权限

select  name 
from center_user_permissions
where permissions_id in (1,2)
group by name
having count(*) = 2

关于php - Mysql SELECT 名称,其中具有名称的所有行都具有特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37868742/

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