簡體   English   中英

更新mysql中的查詢以獲取新列

[英]Update query in mysql for new column

民間

我有一張桌子,如下

在此處輸入圖片說明

我們假設在countryname列之后添加一個新列,即parent_country,結果應如下所示

id parentid  countryname                Parent_country

39  0        Barbados                     Barbados
40  39       Barbados mobile              Barbados
41  39       Mobile Digicel               Barbados
42  0        Anguilla                     Anguilla 
43  42       Anguilla Mobile              Anguilla 
44  42       hello Mobile Digicel         Anguilla 

謝謝

我不認為您應該添加一列。 您正在打破規范化的基本規則之一。 這是一個查詢,可為您提供所需的結果。

SELECT tbl.id as id
  , tbl.parentid as parentid
  , tbl.countryname as countryname
  , COALESCE(parent.countryname, tbl.countryname) as Parent_country
FROM tbl
LEFT JOIN tbl AS parent
ON tbl.parentid = parent.id

而且它很容易變成一個視圖(雖然不可更新),該視圖可以模仿表進行讀取

CREATE VIEW tbl_trick_business_team AS
SELECT tbl.id as id
  , tbl.parentid as parentid
  , tbl.countryname as countryname
  , COALESCE(parent.countryname, tbl.countryname) as Parent_country
FROM tbl
LEFT JOIN tbl AS parent
ON tbl.parentid = parent.id

不會添加列,因為可以通過自拍連接獲取數據,並且會破壞規范化-您將在數據庫中使用更多空間。 但是,在某些情況下,提高速度可能會有所幫助。

但是如果需要的話,我們開始

ALTER TABLE tablename ADD COLUMN p_name(text);


UPDATE tablename
INNER JOIN
  (SELECT id,
          parentid,
          country_name
   FROM tablename)a ON tablename.parent_id=a.id
SET tablename.p_name=a.country_name;

您需要將id傳遞給$id變量,然后編寫查詢

UPDATE tablename SET Parent_country='Barbados' WHERE id='".$id."' LIMIT 1"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM