我希望mySQL字段能够引用另一行中的相同字段,并在加载到PHP时返回该字段的值。例如,如果id = 1
行中的行"bar"
中的值为foo
,则id = 3
的行应该具有值"[1]"
(或者类似的东西; 1是指向id = 1
列中foo
}的行,mySQL在返回数组时应该用"bar"
替换该值。
我不是在谈论UPDATE查询。我正在尝试构建一个SELECT查询,以进行适当的替换。我希望[1]
成为该行的永久值,并反映引用行中的foo
应该是什么。
答案 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;