1

为什么我得到错误:子查询返回超过 1 行

 SELECT name, cat_id,
    (
    SELECT topic
    FROM category
    WHERE cat = u.cat_id
    ) AS topics
    FROM name u

谢谢

4

9 回答 9

3

我可能有一个愚蠢的答案,但你为什么不使用 JOIN ?

SELECT name.cat_id, name.name, category.topic
FROM name INNER JOIN category 
ON category.cat = name.cat_id
于 2010-08-03T08:08:18.807 回答
1

子查询:

SELECT topic
FROM category
WHERE cat = u.cat_id

正在返回多个结果 - 您正试图将其放入一行中。

于 2010-08-03T08:06:35.033 回答
0

因为你有两行有同一只猫(我认为这意味着类别)

于 2010-08-03T08:06:25.517 回答
0

您有更多该类别 ID 的主题。

于 2010-08-03T08:06:48.963 回答
0

嗯,是。在您的情况下,它会返回多行。你想拥有什么?

如果在子查询末尾添加 LIMIT 1,则可以获得 1 行。如果您想为每个附加主题增加一行,则可以使用 JOIN。

于 2010-08-03T08:07:17.717 回答
0

因为您使用子查询作为列,所以它必须返回单行。您可以添加 LIMIT 0,1

于 2010-08-03T08:07:35.220 回答
0

因为在您的子查询中,您会返回多行主题

而在选择部分子查询中,这种情况是不允许的。

如果您希望用户的类别有多个主题行,请使用JOINS 。

于 2010-08-03T08:08:57.650 回答
0

你需要加入2张桌子

SELECT name.name, name.cat_id, category.topic
FROM name, category
WHERE name.cat_id = category.cat
于 2010-08-03T08:15:24.970 回答
0

如果您的嵌套选择查询返回多个,您可以通过说 SELECT TOP 1 topic from category... 仅获取第一个结果

于 2010-08-03T08:16:34.967 回答