为什么我得到错误:子查询返回超过 1 行
SELECT name, cat_id,
(
SELECT topic
FROM category
WHERE cat = u.cat_id
) AS topics
FROM name u
谢谢
为什么我得到错误:子查询返回超过 1 行
SELECT name, cat_id,
(
SELECT topic
FROM category
WHERE cat = u.cat_id
) AS topics
FROM name u
谢谢
我可能有一个愚蠢的答案,但你为什么不使用 JOIN ?
SELECT name.cat_id, name.name, category.topic
FROM name INNER JOIN category
ON category.cat = name.cat_id
子查询:
SELECT topic
FROM category
WHERE cat = u.cat_id
正在返回多个结果 - 您正试图将其放入一行中。
因为你有两行有同一只猫(我认为这意味着类别)
您有更多该类别 ID 的主题。
嗯,是。在您的情况下,它会返回多行。你想拥有什么?
如果在子查询末尾添加 LIMIT 1,则可以获得 1 行。如果您想为每个附加主题增加一行,则可以使用 JOIN。
因为您使用子查询作为列,所以它必须返回单行。您可以添加 LIMIT 0,1
因为在您的子查询中,您会返回多行主题。
而在选择部分子查询中,这种情况是不允许的。
如果您希望用户的类别有多个主题行,请使用JOINS 。
你需要加入2张桌子
SELECT name.name, name.cat_id, category.topic
FROM name, category
WHERE name.cat_id = category.cat
如果您的嵌套选择查询返回多个,您可以通过说 SELECT TOP 1 topic from category... 仅获取第一个结果