genmai.go
func (c *Condition) OrderBy(table, col interface{}, order ...interface{}) *Condition {
	order = append([]interface{}{table, col}, order...)
	orderbys := make([]orderBy, 0, 1)
	for len(order) > 0 {
		o, rest := order[0], order[1:]
		if _, ok := o.(string); ok {
			if len(rest) < 1 {
				panic(fmt.Errorf("OrderBy: few arguments"))
			}
			// OrderBy("column", genmai.DESC)
			orderbys = append(orderbys, c.orderBy(nil, o, rest[0]))
			order = rest[1:]
			continue
		}
		if len(rest) < 2 {
			panic(fmt.Errorf("OrderBy: few arguments"))
		}
		// OrderBy(tbl{}, "column", genmai.DESC)
		orderbys = append(orderbys, c.orderBy(o, rest[0], rest[1]))
		order = rest[2:]
	}
	return c.appendQuery(300, OrderBy, orderbys)
}
func (c *Condition) OrderBy(table, col interface{}, order ...interface{}) *Condition {
	order = append([]interface{}{table, col}, order...)
	orderbys := make([]orderBy, 0, 1)
	for len(order) > 0 {
		o, rest := order[0], order[1:]
		if _, ok := o.(string); ok {
			if len(rest) < 1 {
				panic(fmt.Errorf("OrderBy: few arguments"))
			}
			// OrderBy("column", genmai.DESC)
			orderbys = append(orderbys, c.orderBy(nil, o, rest[0]))
			order = rest[1:]
			continue
		}
		if len(rest) < 2 {
			panic(fmt.Errorf("OrderBy: few arguments"))
		}
		// OrderBy(tbl{}, "column", genmai.DESC)
		orderbys = append(orderbys, c.orderBy(o, rest[0], rest[1]))
		order = rest[2:]
	}
	return c.appendQuery(300, OrderBy, orderbys)
}
// OrderBy adds "ORDER BY" clause to the Condition and returns it for method chain.