gpt4 book ai didi

php - MySql 条件 SQL。我的场景可能吗?

转载 作者:行者123 更新时间:2023-11-29 00:46:54 25 4
gpt4 key购买 nike

让我先设定一下情况。

我有一个包含 X 字段的“用户”表,这些字段对于我的问题并不重要,除了“可见性”。 Visibility 是一个 tinyint 值,其含义如下(0 = 所有人可见,1 = 仅对 friend 可见,2 = 不可见)。

我还有一个 friend 表(id, user_id, target_user_id)user_idtarget_user_id 的 friend 。到目前为止很简单吧?

这是它变粘的地方。我正在编写一个 PHP API,我的类方法看起来有点像这样:

public function getUsers($requester, $page, $num) {}
  • $requester 是请求用户的人的用户 ID
  • $page是分页页码
  • $num 是每页的项目数

我想在 SQL 中做的是从用户表中获取 $num 用户,如果他们的可见性字段是 = 0 或 1。但是,如果可见性标志是 1,我需要确保用户 id 和 $requester 是 friend 表中的 friend ,只有当他们是 friend 时才返回该用户。

我考虑过在返回结果后使用 PHP 来过滤可见性,但是如果我要求 5 条记录,并且一个或多个用户的可见性设置为 1 并且不是 friend ,则分页(限制)将被搞砸与请求者。这几乎必须完全通过 sql 完成。

可能吗??

最佳答案

尝试创建一个与用户具有相同结构的临时表“temp”。

select * into temp From users where visibility=0 or visibility=1;
Select * from temp, friends where (temp.visibility=0) or (temp.user_id = friends.target_user_id);

不要忘记清空临时表。

我还没有尝试过第二个查询,让我知道你得到了什么输出。

select * from users, friends where (users.visibility=0) or (users.visibility=1 and users.user_id = friends.target_user_id);

关于php - MySql 条件 SQL。我的场景可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10190171/

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