2012-04-11 104 views
4
SELECT * FROM `image_appreciations` 
WHERE `image_id` IN(SELECT `id` FROM `images` WHERE `user_id` = '1') 

是我目前的查詢,返回結果爲零子查詢裏面「IN」的條款

SELECT `id` FROM `images` WHERE `user_id` = '1' 

被周圍的8號的子查詢返回兩個人在

SELECT * FROM `image_appreciations` 
WHERE `image_id` IN(77,89) 

,並發現這工作正常。但是它們一起失敗了。我究竟做錯了什麼?

+0

你的語法看起來是正確的,我...這裏是一個參考,雖然萬一http://beginner-sql-tutorial.com/sql-subquery.htm – 2012-04-11 20:24:09

+1

檢查,如果'ID沒有NULL'在你的子查詢 – 2012-04-11 20:25:19

+0

@rs:爲什麼會有所作爲?如果'id'爲NULL,那麼該行將被忽略。 – 2012-04-11 20:28:41

回答

6

這可以通過使用JOIN來完成。下面是一個使用隱式短語句法的例子。

SELECT * FROM image_appreciations a, images i 
WHERE a.image_id = i.id AND i.user_id = 1 
+0

完美地工作。謝謝!將接受,當它也允許我:) – Harry 2012-04-11 20:27:38

+0

雖然認識到加入構建:從表1,表2不是今天使用的標準 – Leslie 2012-04-11 20:38:15

+2

@萊斯利今天使用的標準是什麼? – Harry 2012-04-11 20:58:47

4

像這樣的子查詢「應該」工作,奇怪的是,它不是。無論如何,你可以嘗試使用JOIN來解決這個問題。

SELECT * FROM `image_appreciations` 
JOIN `images` ON `image_id` = `id` 
WHERE `images`.`user_id` = '1'