我需要一起合并查询。这是一项很简单的任务,我做了很多,但这次我有点奇怪的事情。我正在合并的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评论了正确答案。我第一次没看错。
答案 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语句中的所有匹配行。