當我加入2代表我得到一個錯誤結合2表 - 子查詢返回多個1行
select * from picture where id=(SELECT id FROM user where age= 40)
#1242 - 子查詢返回多個1行
什麼加入這兩個大數據表的最佳方式是什麼?我想,所有的結果
當我加入2代表我得到一個錯誤結合2表 - 子查詢返回多個1行
select * from picture where id=(SELECT id FROM user where age= 40)
#1242 - 子查詢返回多個1行
什麼加入這兩個大數據表的最佳方式是什麼?我想,所有的結果
通過IN
select * from picture where id in (select id from user where age = 40)
更換注=
,這僅僅是「半連接」兩個表,即你只會得到的圖片作爲結果,而不是一個圖片,用戶關係。如果你確實想要做後者,那麼你就必須inner join
兩個表:
select * from picture p
join user u on p.id = u.id -- are you sure about this join condition?
where u.age = 40
嘗試使用「IN」而不是「=」
select * from picture where id IN (SELECT id FROM user where age= 40)
連接是正確的做法! –
是的,但是我們沒有所有的信息來創建連接查詢IMO。上面的加入示例似乎將圖片ID與人物ID進行比較,如Lukas所說:) – bjornruysen
因此,這就是您需要進行加入的內容。 –
在WHERE子句,當您爲id
賦值時,SQL需要一個值。問題是第二個查詢SELECT id FROM user where age= 40
返回多個行。
你可以做的是
select *
from picture
where id in
(select id from user where age = 40)
或
select *
from picture p, user u
where p.id = u.id
and u.age = 40
從什麼IM猜測出了什麼林眼見的,
你有一個 「圖片」 表一個「用戶」表。
你希望所有用戶的,其年齡正好40
你可以做一個圖片,
SELECT *
FROM pictures
WHERE user_id IN (SELECT user_id
FROM users
WHERE user_age = 40)
是您的要求?我有什麼意義嗎?
您沒有加入2個表格,您正在從一個表格中進行選擇,並根據另一個表格的結果對結果集進行限定。在這種情況下,USER表中有2個ID,其中年齡爲40歲。請告訴您究竟想要什麼? – beck03076
@ beck03076:即OP是半連接表... –
@LukasEder:是盧卡斯,半連接不是連接,是嗎?無論如何感謝修正。我不明白他的設計。他正在比較picture_id和user_id,你注意到了嗎? – beck03076