2015-10-06 58 views
0

我已創建3個表格:播放列表,曲目列表,& xmlexport,我用它來存儲我的播放列表。爲避免複製播放列表中的任何項目,我使用從播放列表中插入的曲目列表&我將我的曲目列表的第一行插入到我的xmlexport中,然後導出曲目以.xml格式播放文件被我的播放器讀取。每當這個過程發生時,我從音軌列表中刪除一行,所以當表格播放最後一個項目時它變空&我需要運行一個查詢來更新播放列表表格中的曲目列表。這是我一直在玩的東西,但它不能正常工作。如果行計數= 0運行查詢

 INSERT INTO dms.test_trk 
     SELECT * FROM dms.test_ply 
     WHERE row_count() <= 0; 
+1

不知道如果我理解正確你的問題,但如果我有這聽起來像你需要的是一個隊列,而不是數據庫。以redis lpush和rpop爲例。 – e4c5

回答

1

同你說

INSERT INTO dms.test_trk 
SELECT * FROM dms.test_ply 
WHERE row_count() <= 0; 

究竟你希望發生什麼?我會認爲最後一次操作(即執行此語句之前的操作)的結果將與零進行比較,因此行將從test_ply中檢索或不檢索。

但是,您似乎認爲row_count以某種方式告訴您test_trk中是否有記錄。

這兩種假設看起來都不對。我的測試表明,在啓動INSERT時,row_count被重置爲-1,因此您不能在INSERT語句中使用此函數。

什麼你正在尋找取而代之的是一個簡單的EXISTS子句:

insert into test_trk 
select * from test_ply where not exists (select * from test_trk); 
+0

當我運行「哪裏不存在」它返回0行受到影響。我有這個工作在MS訪問存儲的功能(如果rst.recordcount <= 0然後運行查詢)我只是想找到一種方法來完成這與MySQL。我需要創建一個函數還是有一個簡單的SQL語句,將工作? – drs

+0

所有此聲明所做的事情是在test_trk重新填充以防萬一它爲空。你不必在旁邊做任何事;您不必額外計數記錄。只要test_trk中至少有一個條目,只要test_trk完全爲空,該語句就不會執行任何操作,語句將重新填充表。 –

+0

「哪裏不存在」不適合我,但我今天再試一次,是的!它的工作!所以我非常感謝你的時間來看這個。 – drs

0

我想你需要一個存儲過程,檢查是否在test_trk COUNT(*)爲0。如果是這樣,運行:

INSERT INTO dms.test_trk 
SELECT * FROM dms.test_ply 

Thisthis應該讓你在正確的軌道上。