github.com/gogf/gf@v1.16.9/database/gdb/gdb_z_mysql_union_test.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package gdb_test 8 9 import ( 10 "github.com/gogf/gf/frame/g" 11 "testing" 12 13 "github.com/gogf/gf/test/gtest" 14 ) 15 16 func Test_Union(t *testing.T) { 17 table := createInitTable() 18 defer dropTable(table) 19 20 gtest.C(t, func(t *gtest.T) { 21 r, err := db.Union( 22 db.Model(table).Where("id", 1), 23 db.Model(table).Where("id", 2), 24 db.Model(table).WhereIn("id", g.Slice{1, 2, 3}).OrderDesc("id"), 25 ).OrderDesc("id").All() 26 27 t.AssertNil(err) 28 29 t.Assert(len(r), 3) 30 t.Assert(r[0]["id"], 3) 31 t.Assert(r[1]["id"], 2) 32 t.Assert(r[2]["id"], 1) 33 }) 34 35 gtest.C(t, func(t *gtest.T) { 36 r, err := db.Union( 37 db.Model(table).Where("id", 1), 38 db.Model(table).Where("id", 2), 39 db.Model(table).WhereIn("id", g.Slice{1, 2, 3}).OrderDesc("id"), 40 ).OrderDesc("id").One() 41 42 t.AssertNil(err) 43 44 t.Assert(r["id"], 3) 45 }) 46 } 47 48 func Test_UnionAll(t *testing.T) { 49 table := createInitTable() 50 defer dropTable(table) 51 52 gtest.C(t, func(t *gtest.T) { 53 r, err := db.UnionAll( 54 db.Model(table).Where("id", 1), 55 db.Model(table).Where("id", 2), 56 db.Model(table).WhereIn("id", g.Slice{1, 2, 3}).OrderDesc("id"), 57 ).OrderDesc("id").All() 58 59 t.AssertNil(err) 60 61 t.Assert(len(r), 5) 62 t.Assert(r[0]["id"], 3) 63 t.Assert(r[1]["id"], 2) 64 t.Assert(r[2]["id"], 2) 65 t.Assert(r[3]["id"], 1) 66 t.Assert(r[4]["id"], 1) 67 }) 68 69 gtest.C(t, func(t *gtest.T) { 70 r, err := db.UnionAll( 71 db.Model(table).Where("id", 1), 72 db.Model(table).Where("id", 2), 73 db.Model(table).WhereIn("id", g.Slice{1, 2, 3}).OrderDesc("id"), 74 ).OrderDesc("id").One() 75 76 t.AssertNil(err) 77 78 t.Assert(r["id"], 3) 79 }) 80 } 81 82 func Test_Model_Union(t *testing.T) { 83 table := createInitTable() 84 defer dropTable(table) 85 86 gtest.C(t, func(t *gtest.T) { 87 r, err := db.Model(table).Union( 88 db.Model(table).Where("id", 1), 89 db.Model(table).Where("id", 2), 90 db.Model(table).WhereIn("id", g.Slice{1, 2, 3}).OrderDesc("id"), 91 ).OrderDesc("id").All() 92 93 t.AssertNil(err) 94 95 t.Assert(len(r), 3) 96 t.Assert(r[0]["id"], 3) 97 t.Assert(r[1]["id"], 2) 98 t.Assert(r[2]["id"], 1) 99 }) 100 101 gtest.C(t, func(t *gtest.T) { 102 r, err := db.Model(table).Union( 103 db.Model(table).Where("id", 1), 104 db.Model(table).Where("id", 2), 105 db.Model(table).WhereIn("id", g.Slice{1, 2, 3}).OrderDesc("id"), 106 ).OrderDesc("id").One() 107 108 t.AssertNil(err) 109 110 t.Assert(r["id"], 3) 111 }) 112 } 113 114 func Test_Model_UnionAll(t *testing.T) { 115 table := createInitTable() 116 defer dropTable(table) 117 118 gtest.C(t, func(t *gtest.T) { 119 r, err := db.Model(table).UnionAll( 120 db.Model(table).Where("id", 1), 121 db.Model(table).Where("id", 2), 122 db.Model(table).WhereIn("id", g.Slice{1, 2, 3}).OrderDesc("id"), 123 ).OrderDesc("id").All() 124 125 t.AssertNil(err) 126 127 t.Assert(len(r), 5) 128 t.Assert(r[0]["id"], 3) 129 t.Assert(r[1]["id"], 2) 130 t.Assert(r[2]["id"], 2) 131 t.Assert(r[3]["id"], 1) 132 t.Assert(r[4]["id"], 1) 133 }) 134 135 gtest.C(t, func(t *gtest.T) { 136 r, err := db.Model(table).UnionAll( 137 db.Model(table).Where("id", 1), 138 db.Model(table).Where("id", 2), 139 db.Model(table).WhereIn("id", g.Slice{1, 2, 3}).OrderDesc("id"), 140 ).OrderDesc("id").One() 141 142 t.AssertNil(err) 143 144 t.Assert(r["id"], 3) 145 }) 146 }