2013-04-04 27 views
0

我有一個時髦的查詢,可以很好地處理靜態數據,但我需要我的數據是動態的。因此,靜態數據是這樣的在我的選擇查詢中寫入一個相關的子查詢

SELECT c.my_name, c.my_id, (SELECT count(d.friendship_id) FROM another_table d WHERE d.my_id = 1 AND d.my_friends_id = 2) as count FROM myprofile c WHERE c.my_id = 1; 

這將返回的數據我想是這樣的:

 
my_name my_id count 
parijat 123  1 (OR 0 if the row doesn't exist) 

作爲參考,這兩個another_table.my_id(外鍵),another_table.my_friends_id myprofile.my_id引用(首要的關鍵)。 another_table.friendship_id是這裏的主鍵,並自動遞增。

現在的實際問題:

我希望我的子查詢是這樣的: (SELECT COUNT(d.friendship_id)FROM another_table d WHERE d.my_id = 1 AND d.my_friends_id = CURRENT_ROW_ID)

其中CURRENT_ROW_MY_ID是在主查詢中選擇的c.my_id。

這是可能的,如果不是,我的方法是什麼應該得到我需要的結果?

回答

0

你可以做一個子查詢來獲得當前的AUTO_INCREMENT值該表:

select auto_increment from information_schema.tables where table_schema = 'you_db_name' and table_name = 'your_table_name' 

HTH

舊金山

+0

以及爲什麼我想要獲取當前的auto_increment值? – 2013-04-04 22:03:47

0

有時候我問之前,我已經完全探索的選項。剛剛發現,即使在select語句中,相關子查詢也能正常工作。下面是我做的工作:

SELECT c.my_name,c.my_id,(SELECT count(d.friendship_id)FROM another_table d WHERE d.my_id = 1 AND d.my_friends_id = c.my_id)as count FROM myprofile c WHERE c.my_id = 1;

my_id稍微含糊不清。一個更好的詞是profile_id,但是處理遺留數據庫肯定不是很有趣。