Разница между SET и SELECT для присвоения значений переменным заключается в следующем:
- SET может назначать только одну переменную одновременно, в то время как SELECT может выполнять несколько назначений одновременно. stackoverflow.com
- При назначении из запроса SET может назначить только скалярное значение. stackoverflow.com Если запрос возвращает несколько значений/строк, SET выдаст сообщение об ошибке. stackoverflow.com SELECT присвоит переменной одно из значений и скроет тот факт, что было возвращено несколько значений. stackoverflow.com
- При присвоении из запроса, если возвращаемого значения нет, SET присвоит значение NULL, в то время как SELECT вообще не будет выполнять присвоение (поэтому переменная не будет изменена по сравнению с её предыдущим значением). stackoverflow.com
Таким образом, SET используется, когда нужно присвоить одно значение переменной, а SELECT — когда нужно присвоить несколько значений переменной. stackoverflow.com