2010-04-28 84 views
1

我正在嘗試編寫一個SQL查詢,該查詢將根據另一個表中的字段來重複記錄。我正在運行MySQL 5.基於If語句的SQL查詢重複記錄

(我知道重複的記錄顯示數據庫結構不好,但我沒有設計數據庫,我不能重做所有 - 它是一個在wordpress上運行的shopp電子商務數據庫。 )

每個具有特定屬性的產品都需要指向相同少數圖像的鏈接,因此產品在表中每個圖像需要一行 - 數據庫實際上並不包含圖像,只是其文件名。 (圖像是剪貼畫的一個客戶從選擇)

根據這些記錄...

SELECT * FROM `wp_shopp_spec` WHERE name='Can Be Personalised' and content='Yes' 

我想要做這樣的事情..

對於每個匹配記錄查詢,從wp_shopp_asset中複製記錄5134 - 5139,但更改id使其爲唯一,並將列「parent」中的單元格設置爲wp_shopp_spec表中的'product'值。這將意味着6個新的記錄,每個記錄匹配上面的查詢,所有與「父」但唯一的ID,並每隔一列從原來的複製相同的值創建(即記錄5134-5139)

希望這足夠清楚 - 任何幫助不勝感激。

回答

0

這聽起來像你需要交叉連接到你想要的資產值。因此,像:

Select spec.parent, asset.id as uniqueid, ... 
From`wp_shopp_spec` spec 
    Cross Join (
       Select id 
       From `wp_shopp_asset` 
       Where Id Between 5134 And 5139 
       ) asset 
Where name='Can Be Personalised' 
    And content='Yes' 
0
INSERT wp_shopp_asset 
(parent, col1, col2, ...) 
SELECT wp_shopp_spec.product, wp_shopp_asset.col1, wp_shopp_asset.col2, ... 
FROM wp_shopp_spec 
CROSS JOIN wp_shopp_asset 
WHERE wp_shopp_spec.name='Can Be Personalised' 
    AND wp_shopp_spec.content='Yes' 
    AND wp_shopp_asset.id BETWEEN 5134 AND 5139 
+0

謝謝 - 雖然我收到一個錯誤。 「#1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到正確的語法,以便在'具有個性化並且wp_shopp_spec.content =是和wp_shopp_asset.id BETW'附近使用第6行「 任何想法? – user328371 2010-04-28 23:58:07

+0

你錯過了單引號。 – 2010-04-29 05:04:13

0

對於誰正在尋找這樣的信息的人,知道shopp_spec表不再使用。所有規格(細節)都存儲在shopp_meta表中。