SQL运算符?这是我在看什么?

时间:2012-05-07 20:43:22

标签: sql nested-sets

我找到了一个我试图在项目中使用的嵌套集模型的示例。我无法理解正在发生的事情的一小部分,这反过来使我无法根据我的需要调整它。示例如下所示:

LOCK TABLE nested_category WRITE;

SELECT @myRight := rgt FROM nested_category
WHERE name = 'TELEVISIONS';

UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight;

INSERT INTO nested_category(name, lft, rgt)
VALUES ('GAME CONSOLES', @myRight + 1, @myRight + 2);

UNLOCK TABLES;

我不明白行SELECT @myRight:=rgt FROM nested_category上发生了什么。 更具体地说,我不是在抓“@myRight:= rgt”。那里发生了什么?

4 个答案:

答案 0 :(得分:1)

看起来代码将rgtnested_category的行name = 'TELEVISIONS'的值@myRight分配给变量{{1}}。

答案 1 :(得分:1)

这是mysql中的赋值运算符。阅读此http://dev.mysql.com/doc/refman/5.0/en/assignment-operators.html

答案 2 :(得分:0)

SELECT @myRight := rgt FROM nested_category

变量myRight将使用表rgt中的nested_category列中的值填充

答案 3 :(得分:0)

至少MySQLTransact-SQL支持用户定义的变量。