2013-03-06 80 views
0

有什么不对这个查询:MySQL查询语法 - 未知列的错误,但列中存在

SELECT * 
FROM families f JOIN family_histories fh ON f.id = fh.family_id 
WHERE f.family_status_cat_id = 1422 
AND (SELECT hst.created_at 
    FROM family_histories hst 
    WHERE hst.family_history_cat_id = 1422 
    AND hst.new_value LIKE '%1422%') 
BETWEEN '2010/2/13' AND '2013/3/6' 

我得到 -

未知列 'hst.new_value' 在 'where子句'

。 但列存在!

+2

这只是意味着'family_histories'没有名为'new_value'的列 – 2013-03-06 13:25:38

+0

如果删除条件“AND hst.new_value LIKE'%1422%'”它会给你什么错误? – DevelopmentIsMyPassion 2013-03-06 13:28:00

+1

你的语法不正确......连接的表和子句'between'没有连接 – Justin 2013-03-06 13:30:25

回答

1

尝试此查询 -

SELECT * FROM families f 
    JOIN family_histories fh 
    ON f.id = fh.family_id 
WHERE 
    f.family_status_cat_id = 1422 AND 
    fh.created_at BETWEEN '2010-02-13' AND '2013-03-06' AND 
    fh.family_history_cat_id = 1422 AND 
    fh.new_value LIKE '%1422%' 

这是你想要的吗?

1

如果列名是new_val,那么你应该有下面的查询

SELECT * FROM families f 
JOIN family_histories fh 
ON f.id = fh.family_id 
WHERE 
f.family_status_cat_id = 1422 AND 
fh.created_at BETWEEN '2010-02-13' AND '2013-03-06' AND 
fh.family_history_cat_id = 1422 AND 
fh.new_val LIKE '%1422%' 

你不会需要第二个选择,你在查询中有当前。它与Devart提到的查询相同。