2010-08-03 65 views
1

爲什麼我得到錯誤: 子查詢返回多個1個的mysql,使用兩個選擇

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

感謝

+2

因爲它呢?像這樣的子查詢必須只返回1行。 – 2010-08-03 08:06:39

+0

您可以在子選擇查詢中使用Top 1,這將導致只返回一行到主查詢 – 2010-08-03 08:28:09

回答

0

,因爲你有兩排,貓一樣的(我假設這意味着類別)

1

子查詢:

SELECT topic 
FROM category 
WHERE cat = u.cat_id 

將返回不止一個結果 - 你正在試圖將其整合到一行中。

0

您有該類別ID的更多主題。

0

嗯,是的。它在你的情況下返回多行。 你想擁有什麼?

如果您在子查詢的末尾添加LIMIT 1,則可以獲得1行。 如果您想爲每個附加主題添加一行,則可以使用JOIN。

0

因爲您使用子查詢作爲列,所以它必須返回一行。您可以添加限制0,1

3

我也許有一個愚蠢的答案,但爲什麼不使用JOIN?

SELECT name.cat_id, name.name, category.topic 
FROM name INNER JOIN category 
ON category.cat = name.cat_id 
0

因爲在你的子查詢,你得到主題的多行返回

而在選擇部分子查詢這種情況下是不允許的

使用JOINS如果您希望多個用戶類別的主題行。

0

你需要加入2個表

SELECT name.name, name.cat_id, category.topic 
FROM name, category 
WHERE name.cat_id = category.cat 
0

如果嵌套查詢查詢返回不止一個,可以說從類別中選擇TOP 1的話題只獲取第一個結果......