还有一个类似的问题,但它似乎没有回答我的问题.
我的问题是:为什么我ERROR 1222 (21000): The used SELECT statements have a different number of columns
从以下SQL中收回此错误
SELECT * FROM friends
LEFT JOIN users AS u1 ON users.uid = friends.fid1
LEFT JOIN users AS u2 ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2 = 1) AND (friends.fid1 < 1)
ORDER BY RAND()
LIMIT 6;
Run Code Online (Sandbox Code Playgroud)
这是users
:
+------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default …
Run Code Online (Sandbox Code Playgroud) 为什么我得到#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 …
Run Code Online (Sandbox Code Playgroud) 如何从两个不同的表中选择不同的列,例如:
SELECT username, email FROM `table1`
UNION
SELECT * FROM `table2` WHERE username = 'user1';
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误"#1222 - The used SELECT statements have a different number of columns"
.根据我的理解,UNION不起作用,
有没有办法实现这一点,因为我需要不等数量的列和行,并且两个表中没有相互/相似的条目(即user1未在table1中列出)?
这可以不在一个查询中完成吗?
谢谢!