sql/query/
union.rs

1use crate::{Dialect, Select, ToSql};
2
3pub struct Union {
4    pub all: bool,
5    pub queries: Vec<Select>,
6}
7
8impl ToSql for Union {
9    fn write_sql(&self, buf: &mut String, dialect: Dialect) {
10        let all = if self.all { "ALL " } else { "" };
11        if self.queries.is_empty() {
12            return;
13        }
14        let first = self.queries.iter().next().unwrap();
15        first.write_sql(buf, dialect);
16        for q in self.queries.iter().skip(1) {
17            buf.push_str(" UNION ");
18            buf.push_str(all);
19            q.write_sql(buf, dialect);
20        }
21    }
22}