mySQL引用另一行中的字段

时间:2011-10-21 02:46:54

标签: mysql

我希望mySQL字段能够引用另一行中的相同字段,并在加载到PHP时返回该字段的值。例如,如果id = 1行中的行"bar"中的值为foo,则id = 3的行应该具有值"[1]"(或者类似的东西; 1是指向id = 1列中foo}的行,mySQL在返回数组时应该用"bar"替换该值。

我不是在谈论UPDATE查询。我正在尝试构建一个SELECT查询,以进行适当的替换。我希望[1]成为该行的永久值,并反映引用行中的foo应该是什么。

1 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情,但不知道更多,你的里程可能会有所不同。

另外,只需使用1,而不是[1]作为参考值

SELECT a.id, b.foo
FROM `foo_table` a
INNER JOIN `foo_table` b
    ON CAST(a.foo AS UNSIGNED) = b.id
WHERE a.id = 3 -- or whatever

更新

我更倾向于让你的桌面设计更具体。例如,尝试这个结构

CREATE TABLE `foo_table` (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    foo VARCHAR(255),
    parent_id INT NULL,
    FOREIGN KEY (parent_id) REFERENCES `foo_table` (id)
        ON DELETE CASCADE
) ENGINE=INNODB;

然后您的查询可以

SELECT a.id, COALESCE(b.foo, a.foo) AS foo
FROM foo_table a
LEFT JOIN foo_table b
    ON a.parent_id IS NOT NULL
    AND a.parent_id = b.id;