【发布时间】:2013-03-15 09:59:09
【问题描述】:
我有一个这样的 MySQL 查询:
select
*,
(select meta_value
from nord_usermeta m
where meta_key = 'firm' and user_id = s.user_id
limit 1)
as firm,
(select meta_value f
rom nord_usermeta m
where meta_key = 'first_name' and user_id = s.user_id
limit 1)
as first_name,
(select meta_value
from nord_usermeta m
where meta_key = 'last_name' and user_id = s.user_id
limit 1)
as last_name
from nord_submissions s
order by created_at desc
现在我需要使用这样的 where 子句来缩小范围:
select
*,
(select meta_value
from nord_usermeta m
where meta_key = 'firm' and user_id = s.user_id
limit 1)
as firm,
(select meta_value
from nord_usermeta m
where meta_key = 'first_name' and user_id = s.user_id
limit 1)
as first_name,
(select meta_value
from nord_usermeta m
where meta_key = 'last_name' and user_id = s.user_id
limit 1)
as last_name
from nord_submissions s
where firm like '%DG%'
order by created_at desc
问题显然在于我使用子查询的方式,但我找不到在 where 子句中引用它的方法。
请帮忙。
【问题讨论】:
-
“问题” .. 什么问题?您能否用错误消息/示例数据库架构/示例数据等扩展您的问题 - 甚至可能是一个小提琴sqlfiddle.com/about.html
-
firm 是用户定义的列..我们也可以称它为虚构列..WHERE 仅适用于数据库列。您应该尝试使用
HAVING而不是WHERE