【发布时间】:2013-10-11 15:31:25
【问题描述】:
我有以下表格:
用户:
id、用户名、所有者
管理员
id、用户名、所有者
交易:
id,sender_id,sender_type
每个用户都可以由管理员拥有 每个管理员都可以由另一个管理员拥有
我正在尝试处理某些访问级别,并且我想检索具有通过 PHP 生成的列表的发件人部分的所有者的查询行。
为此,我需要根据我拥有的数据获取发件人的所有者,而无需更改数据库结构:
SELECT
* ,
IF (t.sender_type='admin',
( SELECT owner AS qowner
FROM admins
WHERE id=t.sender_id),
( SELECT owner AS qowner FROM users
WHERE id=t.sender_id)
) AS qowner
FROM `transactions` t
WHERE qowner IN ('admin22','admin33','admin44','admin66')
我不断收到此错误:'where 子句'中的未知列'qowner'
我现在陷入了困境。 我将感谢所有的帮助。 谢谢!
【问题讨论】:
-
您将
qowner别名用于不同的事情,这就是错误的原因 -
我删除了别名并仅在 IF 查询后使用它,仍然是同样的问题。
-
那是因为您试图在 where 子句中使用别名。在评估 WHERE 子句之前,别名实际上不存在 - stackoverflow.com/questions/200200/…
标签: mysql sql if-statement case conditional-statements