我刚刚看到以下mysql语法,并且还没有找到它到目前为止的内容。不确定谷歌的用途:
SELECT @M_ID:=member.M_ID FROM member LEFT OUTER JOIN member_status
ON member.M_ID=member_status.M_ID
WHERE member_status.M_ID IS NULL;
这个@M_ID:=
究竟做了什么以及它叫做什么?
答案 0 :(得分:1)
@M_ID
是一个变量。
@M_ID :=
是在select
语句中分配变量的语法。 (对于set
,@M_ID =
就足够了。)
此查询:
SELECT @M_ID := member.M_ID
FROM member LEFT OUTER JOIN
member_status
ON member.M_ID = member_status.M_ID
WHERE member_status.M_ID IS NULL;
返回member
中没有相应行的member_status
行。 @M_ID
正在将其中一个值分配给变量。
这看起来像一个糟糕的编码实践,因为多个id可能不匹配,并且表达式只返回一个。例如,如果你想将它们全部放入以逗号分隔的列表中,你可以这样做:
SELECT @M_ID := GROUP_CONCAT(member.M_ID)
FROM member LEFT OUTER JOIN
member_status
ON member.M_ID = member_status.M_ID
WHERE member_status.M_ID IS NULL;
我并不主张将值存储为列表;只是指出代码可能只返回许多值中的一个。
答案 1 :(得分:0)
正如评论所说,用户定义的变量。