Quote,它总结了this article:
- SET是变量赋值的ANSI标准,SELECT不是.
- SET一次只能分配一个变量,SELECT一次可以分配多个变量.
- 如果从查询赋值,SET只能赋值一个标量值.如果查询返回多个值/行,则SET将引发错误.SELECT将为变量分配一个值,并隐藏返回多个值的事实(因此,您可能永远不会知道其他地方出现问题的原因,请享受解决该问题的乐趣)
- 当从查询中赋值时,如果没有返回值,则SET将赋值为NULL,SELECT将根本不赋值(因此变量不会改变其先前的值)
- 至于速度差异——SET和SELECT之间没有直接差异.然而,SELECT在一次拍摄中完成多个任务的能力确实让它在速度上比SET稍有优势.