作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将如何编写一个查询来选择一个人的名字(行中的一列),因为他们有足够的行来满足所有条件?
例如,我有一个这样设置的数据库:
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/
我是一名优秀的程序员,十分优秀!