UNION ALL |合并具有相同列和表的2个查询

时间:2016-09-08 21:25:07

标签: mysql sql laravel eloquent

我需要一起合并查询。这是一项很简单的任务,我做了很多,但这次我有点奇怪的事情。我正在合并的2个查询来自同一个表和同一列。

这是我原始表格的基本概念:

|id|content|
 0 | a
 1 | b
 2 | c
 3 | d

我希望我的查询返回一次。然后我再次选择它。所以SELECT * FROM 'my_table'SELECT * FROM 'my_table WHERE id IN (1,2)我希望它返回这样的内容。

a
b
a
b
c
d

编辑: @dnoeth评论了正确答案。我第一次没看错。

3 个答案:

答案 0 :(得分:1)

我找到了我想要的答案。我只是不知道我在寻找怎么说。

我需要做的是在同一个表上统一2个查询。 您只需使用 UNION ALL 而不是union

即可

所以这是 mysql 中的一个例子。

SELECT * FROM my_table UNION ALL SELECT * FROM my_table WHERE id IN (1,2)

然后,如果您正在使用 Laravel 的口才,就像我使用它一样。

$query = Class::whereIn('id', $array);
Class::where('id','>=',0)->unionAll($query)->get();

答案 1 :(得分:0)

好吧,既然你对结果的确不确切,你可能会这样做:

select t1.val
from tableT t1
join tableT t2 on t1.id=t2.id or t1.id+1=t2.id
where t1.id<=2 and t2.id<=2 or t1.id>=3

应该屈服:

a
b
b
c
c
d

答案 2 :(得分:0)

只需使用UNION条款即可加入&#34;几个SELECT,只有它们具有相同结果列的restiction。你的例子是:

(SELECT * FROM 'my_table')
UNION
(SELECT * FROM 'my_table WHERE id IN (1,2))

你会得到:

|id|content|
 0 | a
 1 | b
 2 | c
 3 | d
 1 | b
 2 | c

更多细节: http://dev.mysql.com/doc/refman/5.7/en/union.html

PS:

UNION的默认行为是从结果中删除重复的行。使用可选的ALL关键字,不会发生重复行删除,结果包括所有SELECT语句中的所有匹配行。