2012-03-23 74 views
2

我有一個表,看起來像這樣的:選擇具有指定ID的條目,前後也具有相同外鍵值一個條目

| id | fk_book | name | 
----------------------- 
| 1 | 2  | test1| 
| 3 | 2  | test3| 
| 6 | 3  | notes| 
| 7 | 2  | test2| 

不,我想用id項3. select * from test where id = 3 AND fk_book = 1;

但是,還有一種方法來獲得ID爲1和7的項目? ,我不知道其他條目的ID

感謝

+0

你的意思是1和6 ? – 2012-03-23 08:19:49

+0

nope,因爲6不在fk_book = 1 – Pascal 2012-03-23 08:21:52

+0

@AndreyGurinov我猜他的意思是「具有相同外鍵的項目」。也許OP可以澄清這一點。 – liquorvicar 2012-03-23 08:24:27

回答

5

我認爲你需要這樣的:

select * from test where id=3 AND fk_book = 2 
union all 
select * from test where id < 3 AND fk_book = 2 order by id desc limit 1 
union all 
select * from test where id > 3 AND fk_book = 2 order by id asc limit 1 
+0

+1這很可能是OP引用的內容,而不是提供所有的id本身。 – Bazzz 2012-03-23 08:23:36

+0

這將按順序返回項目3,1和6,這不是OP要求的。在OP的評論之後,查看我編輯的問題標題。 – liquorvicar 2012-03-23 08:23:52

+0

答案已經更新 – 2012-03-23 08:26:06

1

嘗試下面的SQL查詢:

select * from test where id in(1,3,7); 
+0

我認爲OP希望只提供id 3,並獲得前一個和下一個記錄(不管他們的id如何)。 – Bazzz 2012-03-23 08:22:07

+0

@Bazzz,我不得不等待op編輯問題=) – k102 2012-03-23 08:32:15

相關問題