繁体   English   中英

MySQL SELECT:基于同一表中的列值返回多个列

[英]MySQL SELECT: Returning multiple columns based on a column value in the same table

我正在从包含文件元信息的单个表中读取行。 其中一列acl包含一个标志(0,1或2),映射到(不受限制,受限制或私有)。 我想创建一个SELECT查询,该查询将基于两个PHP变量$ userId和$ isAdmin返回文件数据。 逻辑如下:

  • 如果acl = 0,则返回文件信息行,而与$ userId或$ isAdmin值无关
  • 如果acl = 1并且$ isAdmin为TRUE,则返回文件信息行
  • 如果acl = 2 IF $ userId = fileownerid(其中fileownerid是表中存储上载文件的所有者的ID的列),则返回文件信息行

所以基本上我在表上查询,只返回允许用户查看的行

我尝试在子查询中使用各种CASE和IF语句,但无法解决。 一开始,不处理PHP中的SQL结果是不可能的。

任何大师都知道一种方法吗?

select * from file where (acl = 0) or (acl = 1 and ? = 'TRUE') or (acl = 2 and ? = fileownerid)然后将isAdmin和userid绑定到变量1和2。

我认为这样的工作应该可以完成:

$qry = 'SELECT * FROM yourtable 
WHERE (acl = 0)
OR (acl = 1 AND '.$isAdmin.')
OR (acl = 2 AND '.$userId.' = fileownerid)';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM