爲什麼我得到錯誤: 子查詢返回多個1個的mysql,使用兩個選擇
SELECT name, cat_id,
(
SELECT topic
FROM category
WHERE cat = u.cat_id
) AS topics
FROM name u
感謝
爲什麼我得到錯誤: 子查詢返回多個1個的mysql,使用兩個選擇
SELECT name, cat_id,
(
SELECT topic
FROM category
WHERE cat = u.cat_id
) AS topics
FROM name u
感謝
,因爲你有兩排,貓一樣的(我假設這意味着類別)
子查詢:
SELECT topic
FROM category
WHERE cat = u.cat_id
將返回不止一個結果 - 你正在試圖將其整合到一行中。
您有該類別ID的更多主題。
嗯,是的。它在你的情況下返回多行。 你想擁有什麼?
如果您在子查詢的末尾添加LIMIT 1,則可以獲得1行。 如果您想爲每個附加主題添加一行,則可以使用JOIN。
因爲您使用子查詢作爲列,所以它必須返回一行。您可以添加限制0,1
我也許有一個愚蠢的答案,但爲什麼不使用JOIN?
SELECT name.cat_id, name.name, category.topic
FROM name INNER JOIN category
ON category.cat = name.cat_id
因爲在你的子查詢,你得到主題的多行返回。
而在選擇部分子查詢這種情況下是不允許的。
使用JOINS如果您希望多個用戶類別的主題行。
你需要加入2個表
SELECT name.name, name.cat_id, category.topic
FROM name, category
WHERE name.cat_id = category.cat
如果嵌套查詢查詢返回不止一個,可以說從類別中選擇TOP 1的話題只獲取第一個結果......
因爲它呢?像這樣的子查詢必須只返回1行。 – 2010-08-03 08:06:39
您可以在子選擇查詢中使用Top 1,這將導致只返回一行到主查詢 – 2010-08-03 08:28:09