2012-04-27 335 views
1

我试图将子查询结果存储在使用MySQL的会话变量中,但问题是当我像这样执行此查询(请参阅下面的查询)时,错误消息将如此显示(请参见下面的错误消息)。如何使用MySQL将子查询结果存储在会话变量中?

我不知道如何解决这个问题。

(0 row(s) affected) 
Execution Time : 00:00:00:343 
Transfer Time : 00:00:00:000 
Total Time  : 00:00:00:343 

Error Code : 1222 
The used SELECT statements have a different number of columns 

Execution Time : 00:00:00:000 
Transfer Time : 00:00:00:000 
Total Time  : 00:00:00:000 

查询

SET @post := 0; 

SELECT user_name, 
(SELECT COUNT(*) INTO @post FROM post WHERE user_id = '23332'), 
@post 
FROM `user_fans` WHERE user_id = '23332'; 
+0

为什么你在这个查询中使用会话变量? – Quassnoi 2012-04-27 14:10:15

回答

1
SET @post := 0; 

SELECT user_name, 
     @post := (SELECT COUNT(*) FROM post WHERE user_id = '23332'), 
     @post 
FROM `user_fans` 
WHERE user_id = '23332'; 
0

如果你只是想使用后数进一步那么如果你想只显示文章数,然后用很精致

SELECT user_name, 
     (SELECT COUNT(*) FROM post WHERE user_id = '23332') as Post, 
FROM `user_fans` 
WHERE user_id = '23332'; 
相关问题