2016-12-05 20 views
-1

請我需要從表中複製數據並再次插入它,只更改所有者名稱和根名稱,我有以下表結構樣本試圖做。我的編碼是在PHPSql查詢複製數據並替換一些實體,同時再次保存

有人這樣

保存在數據庫中
id | root | subname | type | owner 
------|------|---------|------|---------- 
1  | AB | subS0 | file | peter 
2  | CB | null | txt | peter 
3  | DF | ast  | doc | mike 
4  | AB | ghst | cmd | peter 
5  | OF | wmel | inc | john 

現在我想複製所有數據該實體名稱爲root,並與另一個實體名稱和所有者名稱

重新插入

之後,我有那麼插入它看起來像這樣

id | root | subname | type | owner 
------|------|---------|------|---------- 
1  | AB | subS0 | file | peter 
2  | CB | null | txt | peter 
3  | DF | ast  | doc | mike 
4  | AB | ghst | cmd | peter 
5  | OF | wmel | inc | john 
6  | JK | subS0 | file | james 
7  | JK | ghst | cmd | james 

上述結果複製所有的表根的名字是AB並用另一插入根名稱JK,並更改所有者名稱。 請如何運行sql查詢,將爲我做這個?

這裏是什麼,我試圖做

<?php 
    $db->prepare(" 
    INSERT INTO filelist(name, owner, date, Description, PrivacyType, tags, Type) 
    VALUES(:name, :owner, date, Description, PrivacyType, tags, :Type) 
    SELECT name, owner, date, Description, PrivacyType, tags, Type 
//OR this way 
    SELECT :name, :owner, date, Description, PrivacyType, tags, :Type 
    FROM filelist 
    WHERE name = :copyfromHere 
    "); 
       $db->bind(':name', 'JK'); 
       $db->bind(':owner', 'james'); 
       $db->bind(':copyfromHere', 'AB'); 
       $db->bind(':Type', 'TT'); 
    ?> 
+0

你說的邏輯是不是真的很明確。澄清更多一點 – Rahul

+0

@Rahul我更新了什麼試圖做示例查詢 –

+0

@Rahul請我需要幫助,我知道接近查詢,但如何使用它在Pdo是我的問題,正在工作時,我跑它在SQL中,但是當我在我的項目中實現它不是 –

回答

0

用別名試試吧:你的第一個問題的

答:

INSERT INTO `filelist` (root, subname, type, owner) 
SELECT 'JK', t.subname, t.type, 'James' FROM `filelist` as t WHERE t.root='AB' 

並與您的PDO-例相同:

<?php 
    $db->prepare(" 
    INSERT INTO filelist(name, owner, date, Description, PrivacyType, tags, Type) 
    SELECT :name, :owner, t.date, t.Description, t.PrivacyType, t.tags, :Type 
    FROM filelist AS t 
     WHERE t.name = :copyfromHere 
"); 
      $db->bind(':name', 'JK'); 
      $db->bind(':owner', 'james'); 
      $db->bind(':copyfromHere', 'AB'); 
      $db->bind(':Type', 'TT'); 
?> 
0

您可以修改您需要的部分數據子選擇使用裏面的常量插入

INSERT INTO filelist (root, subname, type, owner) 
SELECT 'JK', subname, type, 'james' FROM filelist 

示例代碼查詢可能是最簡單的,如果你想控制PHP中的值,用$變量替換。

+0

在我的示例查詢的情況下,不需要再次添加'VALUES(:根,:子名稱,:類型,:所有者)',我在選擇部分中使用php pdo我會這樣做'SELECT:JK,subname,type,:owner FROM filelist'?我剛剛更新了我的問題 –

相關問題