Как использовать Не равно условию в U-SQL? - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь написать запрос U-SQL для репликации той же логики, что и запрос SQL, как показано ниже.

SELECT * 
FROM tb1 
LEFT JOIN tb2 
ON tb1.id=tb2.id AND tb1.pid!=tb2.pid;

Поскольку U-SQL не поддерживает Не равно в условии соединения (tb1.pid!=tb2.pid).

Есть ли способ реализовать эту логику в USQL?

1 Ответ

0 голосов
/ 02 сентября 2018

Во-первых, обратите внимание, что использование любого оператора сравнения, кроме равенства, в предложении JOIN обычно снижает производительность запроса, и я лично считаю это плохим стилем. В конце концов, это предложение JOIN, а не предложение WHERE, означающее, что оно должно сообщать СУБД, какие строки «связывать» вместе (а какие нет, чтобы не «связывать»).

Это верно, даже если СУБД допускает использование всевозможных операторов сравнения в предложении JOIN.

Сказав это, просто переместите сравнение != в предложение WHERE (где оно принадлежит в любом случае по причинам, указанным выше):

SELECT * 
FROM tb1 
LEFT JOIN tb2 
ON tb1.id=tb2.id
WHERE tb1.pid!=tb2.pid;

Это даст те же результаты, что и ваш исходный запрос.

...