2015-10-20 2 views
1

Когда я использую $query2->union($query1) это результат SQL в Laravel:UNION DISTINCT в Laravel построитель запросов

query one ... 
union 
query two ... 

Как я могу иметь этот запрос:

query one ... 
union distinct 
query two ... 

В laravel documentation я видел только union() и unionAll() методы.

+0

См. Http://stackoverflow.com/questions/49925/what-is-the-difference-between-union-and-union-all – codeblur

ответ

0

Согласно this answer, a UNION запрос по определению представляет собой отдельный запрос (при условии, что столбцы в двух результатах одинаковы). A UNION ALL возвращает дубликаты, если они существуют.

Так, в Laravel 5.1 (по крайней мере), работающий союз согласно example in the documentation, по умолчанию, отчетливый:

$first = DB::table('users') 
    ->whereNull('first_name'); 

$users = DB::table('users') 
    ->whereNull('last_name') 
    ->union($first) 
    ->get(); 

Я не буду повторять то, что было хорошо сказано в that answer относительно (это стоит прочитать), но в целом DISTINCT работает медленнее, чем DISTINCT ALL.

Смежные вопросы