1=1
обычно используется в верхней части предложения where для форматирования и для облегчения отладки. Это правильный синтаксис и не влияет на вывод фактического запроса.
Это особенно полезно, если вы хотите прокомментировать строку за строкой аргумента where для отладки. Рассмотрим запрос
SELECT Columns
FROM Table
WHERE 1=1
AND Col1 = @Value1
And Col2 IN (@Value2, @Value3)
And Cole Between @Value4 and @Value5
против
SELECT Columns
FROM Table
WHERE Col1 = @Value1
And Col2 IN (@Value2, @Value3)
And Cole Between @Value4 and @Value5
гораздо легче комментировать любые значимые части ИНЕКЕ с первого запроса
WHERE 1=1
-- AND Col1 = @Value1
And Col2 IN (@Value2, @Value3)
And Cole Between @Value4 and @Value5
, тогда как во втором запросе вы бы необходимо сделать это
SELECT Columns
FROM Table
WHERE --Col1 = @Value1
-- And
Col2 IN (@Value2, @Value3)
And Cole Between @Value4 and @Value5
EDIT:
отформатированных запросы сверху специально для StackOverflow, потому что она признает только /* COMMENT */
, а не -- COMMENT
Это намного проще, закомментировать содержательную часть ИНЕКЕ с первым запросом
WHERE 1=1
/* AND Col1 = @Value1 */
And Col2 IN (@Value2, @Value3)
And Cole Between @Value4 and @Value5
, тогда как во втором запросе вы должны сделать это
SELECT Columns
FROM Table
WHERE /* Col1 = @Value1 */
/* And */
Col2 IN (@Value2, @Value3)
And Cole Between @Value4 and @Value5
Запрос эквивалентен: 'SELECT * FROM user' – intgr