mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 12:28:15 +08:00
内部 SQL 格式优化
This commit is contained in:
@ -19,81 +19,81 @@ namespace FreeSql.Tests.MySqlConnector
|
||||
var sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(1, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '011'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(0, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 2, '02'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(1, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '02'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '03'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '04'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(2, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '001'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '002'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '003'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '004'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb02` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(0, iou.ExecuteAffrows());
|
||||
var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
|
||||
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
|
||||
@ -111,81 +111,81 @@ UNION ALL
|
||||
var sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(1, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '011'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(0, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 2, '02'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(1, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '02'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '03'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '04'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(2, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '001'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '002'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '003'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '004'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(0, iou.ExecuteAffrows());
|
||||
var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
|
||||
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
|
||||
@ -221,27 +221,27 @@ UNION ALL
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '100001'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '100002'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '100003'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '100004'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)
|
||||
FROM `tbioudb022` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)
|
||||
|
||||
;
|
||||
|
||||
@ -265,81 +265,81 @@ INSERT INTO `tbioudb022`(`name`) VALUES('00001'), ('00002'), ('00003'), ('00004'
|
||||
var sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 1 AND a.`id2` = '01')
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 1 AND a.`id2` = '01')
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(1, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '011'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 1 AND a.`id2` = '01')
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 1 AND a.`id2` = '01')
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(0, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 2, '02', '02'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 2 AND a.`id2` = '02')
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 2 AND a.`id2` = '02')
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(1, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 1 AND a.`id2` = '01')
|
||||
limit 0,1)
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 1 AND a.`id2` = '01')
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '02', '02'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 2 AND a.`id2` = '02')
|
||||
limit 0,1)
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 2 AND a.`id2` = '02')
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '03', '03'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 3 AND a.`id2` = '03')
|
||||
limit 0,1)
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 3 AND a.`id2` = '03')
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '04', '04'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 4 AND a.`id2` = '04')
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 4 AND a.`id2` = '04')
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(2, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '001'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 1 AND a.`id2` = '01')
|
||||
limit 0,1)
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 1 AND a.`id2` = '01')
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '02', '002'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 2 AND a.`id2` = '02')
|
||||
limit 0,1)
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 2 AND a.`id2` = '02')
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '03', '003'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 3 AND a.`id2` = '03')
|
||||
limit 0,1)
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 3 AND a.`id2` = '03')
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '04', '004'
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 4 AND a.`id2` = '04')
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb03` a
|
||||
WHERE (a.`id1` = 4 AND a.`id2` = '04')
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(0, iou.ExecuteAffrows());
|
||||
var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList();
|
||||
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count());
|
||||
@ -361,81 +361,81 @@ UNION ALL
|
||||
var sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(1, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '011', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(0, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 2, '02', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(1, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '02', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '03', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '04', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(2, iou.ExecuteAffrows());
|
||||
|
||||
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } });
|
||||
sql = iou.ToSql();
|
||||
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '001', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 1)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 2, '002', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 2)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 3, '003', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 3)
|
||||
limit 0,1)
|
||||
UNION ALL
|
||||
SELECT 4, '004', 0, now(3)
|
||||
FROM dual WHERE NOT EXISTS(SELECT 1
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
FROM `tbioudb04` a
|
||||
WHERE (a.`id` = 4)
|
||||
limit 0,1)", sql);
|
||||
Assert.Equal(0, iou.ExecuteAffrows());
|
||||
var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
|
||||
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
|
||||
|
@ -104,22 +104,22 @@ namespace FreeSql.Tests.MySqlConnector
|
||||
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
|
||||
//FROM `Tag` a
|
||||
//WHERE (exists(SELECT 1
|
||||
// FROM `Tag` t
|
||||
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
|
||||
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
|
||||
// limit 0,1))
|
||||
// FROM `Tag` t
|
||||
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
|
||||
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
|
||||
// limit 0,1))
|
||||
|
||||
//ManyToMany
|
||||
var t2 = g.mysql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
|
||||
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
|
||||
//FROM `Song` a
|
||||
//WHERE(exists(SELECT 1
|
||||
// FROM `Song_tag` Mt_Ms
|
||||
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
|
||||
// FROM `Tag` t
|
||||
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
|
||||
// limit 0, 1))
|
||||
// limit 0, 1))
|
||||
// FROM `Song_tag` Mt_Ms
|
||||
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
|
||||
// FROM `Tag` t
|
||||
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
|
||||
// limit 0, 1))
|
||||
// limit 0, 1))
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -203,9 +203,9 @@ namespace FreeSql.Tests.MySqlConnector
|
||||
var sql3 = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid").ToSql();
|
||||
|
||||
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
|
||||
// .InnerJoin(a.TypeGuid == b.Guid)
|
||||
// .LeftJoin(c.Id == b.ParentId)
|
||||
// .Where(b.Name == "xxx"))
|
||||
// .InnerJoin(a.TypeGuid == b.Guid)
|
||||
// .LeftJoin(c.Id == b.ParentId)
|
||||
// .Where(b.Name == "xxx"))
|
||||
//.Where(a => a.Id == 1).ToSql();
|
||||
|
||||
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s
|
||||
@ -929,8 +929,8 @@ namespace FreeSql.Tests.MySqlConnector
|
||||
count = (long)select.As("b").Sum(b => b.Id)
|
||||
});
|
||||
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`)
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
@ -947,8 +947,8 @@ FROM `tb_topic` a", subquery);
|
||||
count = select.As("b").Min(b => b.Id)
|
||||
});
|
||||
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`)
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
@ -965,8 +965,8 @@ FROM `tb_topic` a", subquery);
|
||||
count = select.As("b").Max(b => b.Id)
|
||||
});
|
||||
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`)
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
@ -983,8 +983,8 @@ FROM `tb_topic` a", subquery);
|
||||
count = select.As("b").Avg(b => b.Id)
|
||||
});
|
||||
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`)
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` b
|
||||
limit 0,1) as6
|
||||
FROM `tb_topic` a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
@ -999,7 +999,7 @@ FROM `tb_topic` a", subquery);
|
||||
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
|
||||
FROM `tb_topic` a
|
||||
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
|
||||
FROM `tb_topic` b)))", subquery);
|
||||
FROM `tb_topic` b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
@ -1077,12 +1077,12 @@ WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
|
||||
|
||||
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
|
||||
sql = query.ToSql().Replace("\r\n", "");
|
||||
Assert.Equal("SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALLSELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql);
|
||||
Assert.Equal("SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALL SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql);
|
||||
query.ToList();
|
||||
|
||||
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
|
||||
sql = query.ToSql("count(1) as1").Replace("\r\n", "");
|
||||
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql);
|
||||
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql);
|
||||
query.Count();
|
||||
|
||||
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
|
||||
|
Reference in New Issue
Block a user