民众
我有一张表格如下
我们假设在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
谢谢
答案 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"