Kev*_*erw 11 mysql sql mysql-error-1222
为什么我得到#1222 - 使用的SELECT语句有不同的列数?我正试图从这个用户朋友和他自己加载墙上的帖子.
SELECT u.id AS pid, b2.id AS id, b2.message AS message, b2.date AS date FROM
(
(
SELECT b.id AS id, b.pid AS pid, b.message AS message, b.date AS date FROM
wall_posts AS b
JOIN Friends AS f ON f.id = b.pid
WHERE f.buddy_id = '1' AND f.status = 'b'
ORDER BY date DESC
LIMIT 0, 10
)
UNION
(
SELECT * FROM
wall_posts
WHERE pid = '1'
ORDER BY date DESC
LIMIT 0, 10
)
ORDER BY date DESC
LIMIT 0, 10
) AS b2
JOIN Users AS u
ON b2.pid = u.id
WHERE u.banned='0' AND u.email_activated='1'
ORDER BY date DESC
LIMIT 0, 10
Run Code Online (Sandbox Code Playgroud)
wall_posts表结构看起来像 id date privacy pid uid message
Friends表结构如下 Fid id buddy_id invite_up_date status
pid代表个人资料ID.我不确定最近会发生什么.
OMG*_*ies 20
UNION中的第一个语句返回四列:
SELECT b.id AS id,
b.pid AS pid,
b.message AS message,
b.date AS date
FROM wall_posts AS b
Run Code Online (Sandbox Code Playgroud)
第二个返回六个,因为*扩展为包括以下所有列WALL_POSTS:
SELECT b.id,
b.date,
b.privacy,
b.pid.
b.uid message
FROM wall_posts AS b
Run Code Online (Sandbox Code Playgroud)
在UNION与UNION ALL运营商要求:
使用:
FROM ((SELECT b.id AS id,
b.pid AS pid,
b.message AS message,
b.date AS date
FROM wall_posts AS b
JOIN Friends AS f ON f.id = b.pid
WHERE f.buddy_id = '1' AND f.status = 'b'
ORDER BY date DESC
LIMIT 0, 10)
UNION
(SELECT id,
pid,
message,
date
FROM wall_posts
WHERE pid = '1'
ORDER BY date DESC
LIMIT 0, 10))
Run Code Online (Sandbox Code Playgroud)