为什么我得到#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
wall_posts表结构如下所示 id
date
privacy
pid
uid
message
Friends表结构如下所示 Fid
id
buddy_id
invite_up_date
status
pid代表配置文件ID。我不太确定发生了什么。
UNION中的第一条语句返回四列:
SELECT b.id AS id,
b.pid AS pid,
b.message AS message,
b.date AS date
FROM wall_posts AS b
第二个返回 六 ,因为*扩展为包括以下所有列WALL_POSTS
:
SELECT b.id,
b.date,
b.privacy,
b.pid.
b.uid message
FROM wall_posts AS b
在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))
问题内容: 例如,我不知道每个表中有多少行,我尝试这样做: 在不添加的情况下,我可以将第二个而不是*放在第二个位置来删除此错误吗? 问题答案: 显式地输入列名而不是*,并确保每个选择中同一列的列数和数据类型匹配。 更新: 我真的不认为您希望基于表名称对这些表进行UNION。它们似乎不包含相关数据。如果您发布架构并描述您要实现的目标,则我们可能会提供更好的帮助。
问题内容: 那里还有另一个与此类似的问题,但似乎并没有回答 我的 问题。 我的问题是这样的:为什么我要从下面的SQL中找回此错误? 这里是: 这里是: 如果您也想对这里发生的任何疯狂事情提供任何反馈,请随时这样做。我会结成小块。 问题答案: UNION(和)要求所有UNION查询必须具有: SELECT子句中的列数相同 列数据类型必须在每个位置都匹配 您的查询有: 我最简单的重写是: 您已经两次加
问题内容: 我想重命名表达式结果中的列。当然,以下操作无效: 由于我是SQL的新手,我想我只是缺少一个会导致答案的概念,工具或关键字。向正确方向的提示将不胜感激。谢谢! 更新 我正在寻找一种实现此目的的通用方法,并且特定于MySQL的技术绝对可以。 简而言之,我正在编写一个工具,用于将MySQL查询的结果“导出”到Google Spreadsheets(通过Google Data API)。有些查
问题内容: 在WHERE子句中有使用SELECT语句描述的名称吗?这是好/不好的做法吗? 这会是更好的选择吗? 它远没有那么优雅,但是运行起来比以前的版本要快。我不喜欢它,因为它在GUI中没有非常清晰地显示(并且SQL初学者需要理解它)。我可以将其分为两个独立的查询,但是随后事情变得混乱了…… 注意:我不仅需要日期和分数(例如姓名) 问题答案: 称为相关子查询。它有它的用途。
问题内容: 在PostgreSQL 9.1中,PL / pgSQL给出了一个查询: 其中的类型(例如“ table_name”)。 如何获得“ relname”的适当值,该值可直接在语句中用作: 在PL / pgSQL脚本中? 使用如: 失败与: “(”或附近的语法错误LINE 55:UPDATE quote_ident(r.relname)…。 我正在使用的完整代码: 我敢肯定这种事情经常发生,
问题内容: 如果可能,我需要一个t-sql查询,该查询从任意表中返回值,并且还返回一个增量整数列,其中第一行的值= 1,第二行的值为2,依此类推。 此列实际上不驻留在任何表中,并且必须严格地递增,因为ORDER BY子句可以对表的行进行排序,并且我希望递增的行始终处于完美的形状… 提前致谢。 --EDIT对不起,忘了提及,它必须在SQL Server 2000上运行 问题答案: 对于SQL 200