是否可以在SQL中执行以下操作?

SELECT * FROM table1 INNER JOIN table2 ON (col1=col2 OR TRIM(col1)=TRIM(col2))


要么:

SELECT * FROM table1 INNER JOIN table2 USING (col1 OR col2)

最佳答案

您可以在联接中使用任意逻辑。因此,回答您的问题:是的,您可以在联接中使用析取(“ OR”)。就是说,在您的特定示例中,您的逻辑是重言式-始终是正确的-因此它不会实现任何冗余。

您也不必加入平等。例如,我们可以通过比较幅度来模拟窗口函数:

select    greatest.id,
          greatest.val
from      someTable greatest
left join someTable greater
on        greater.id  = greatest.id
and       greater.val > greatest.val
where     greater.id is null;


尽管上面的例子很普遍,但根据您的问题,我发现很少使用非连接联接。但是,当然可以做到。

关于mysql - SQL OR或,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28684800/

10-13 00:58