在mysql中为新列更新查询

时间:2013-10-09 11:06:04

标签: mysql sql-update

民众

我有一张表格如下

enter image description here

我们假设在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 

谢谢

3 个答案:

答案 0 :(得分:4)

我认为你不应该添加一列。您违反了规范化的基本规则之一。这是一个查询,为您提供所需的结果。

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

答案 1 :(得分:1)

不会添加列,因为数据可以通过自拍连接获得,并且会破坏规范化 - 您将在数据库中使用更多空间。但是在某些情况下,加速可能是有益的。

但如果必须,我们在这里

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;

答案 2 :(得分:0)

您需要将id传递给$id变量,然后编写查询

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