我有多个相同的 mysql数据库表。
我需要的是原始sql 或 Laravel架构来获取数据库中所有表的 Union ,除了那个不一样。
我已经尝试过以下代码
$multipleUnion = DB::table('teble_1')->union(DB::table('teble_2')->union(DB::table('teble_3')))->get();
但是我收到了这个错误
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在' union附近使用正确的语法(select * from
table_3
))'第1行(SQL :( select * fromtable_1
)union((select * fromtable_2
)union(select * fromtable_3
)))
我不想查询
SELECT * FROM table_1 UNION SELECT * FROM table_2 UNION SELECT * FROM table_3
因为表的数量会随着时间的推移而增加。 在此先感谢。
答案 0 :(得分:2)
试试这个:
$multipleUnion = DB::table('teble_1')->union(DB::table('teble_2'))
->union(DB::table('teble_3'))->get();
从表名数组创建查询:
$query = DB::table($tables[0]);
foreach(array_slice($tables, 1) as $table) {
$query->union(DB::table($table));
}
$multipleUnion = $query->get();