mysql查询连接表不起作用

时间:2012-05-22 08:32:42

标签: mysql

这是我的查询,为Join

生成错误
        $query = 'SELECT 
                    a.ks_u_id, 
                    a.ks_keyword,
                    b.u_photo 
                FROM 
                '.T_KEYWORD_HISTORY.' a 
                WHERE a.ks_u_id in ( SELECT uf_target_id FROM '.T_USER_FOLLOW.' WHERE uf_user_id="'.$u_id.'" and uf_target_id <> "'.$u_id.'" )
                JOIN '.T_USER_ACCOUNT.' b ON b.u_id = a.ks_u_id 
                ORDER BY a.ks_time DESC 
                LIMIT 0 , 5 ';

我收到此错误消息。

您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在第8行'JOIN T_USER_ACCOUNT b ON b.u_id = a.ks_u_id ORDER BY a.ks_time DESC '附近使用正确的语法

SELECT 
     a.ks_u_id, a.ks_keyword, b.u_photo 
FROM T_KEYWORD_HISTORY a 
WHERE a.ks_u_id in ( SELECT uf_target_id 
                     FROM T_USER_FOLLOW 
                     WHERE uf_user_id="jake" and uf_target_id <> "jake" ) 
JOIN T_USER_ACCOUNT b ON b.u_id = a.ks_u_id 
ORDER BY a.ks_time DESC 
LIMIT 0 , 5

看起来我为JOIN命令写了错误的查询。

2 个答案:

答案 0 :(得分:0)

尝试

SELECT 
     a.ks_u_id, a.ks_keyword, b.u_photo 
FROM T_KEYWORD_HISTORY a 
JOIN T_USER_ACCOUNT b ON b.u_id = a.ks_u_id 
WHERE a.ks_u_id in ( SELECT uf_target_id 
                     FROM T_USER_FOLLOW 
                     WHERE uf_user_id="jake" and uf_target_id <> "jake" ) 
ORDER BY a.ks_time DESC 
LIMIT 0 , 5

答案 1 :(得分:0)

JOIN子句位于WHERE子句之前。您的查询应该是:

SELECT 
 a.ks_u_id, a.ks_keyword, b.u_photo 
FROM T_KEYWORD_HISTORY a 
JOIN T_USER_ACCOUNT b ON b.u_id = a.ks_u_id 
WHERE a.ks_u_id in ( SELECT uf_target_id 
                 FROM T_USER_FOLLOW 
                 WHERE uf_user_id="jake" and uf_target_id <> "jake" ) 
ORDER BY a.ks_time DESC 
LIMIT 0 , 5