diff --git a/mysql/database.go b/mysql/database.go
index 7730534e524c2d62b96512736c440cd0bf15d231..0dd71f85a1b12b4e04d2582784704456c77487f4 100644
--- a/mysql/database.go
+++ b/mysql/database.go
@@ -34,7 +34,7 @@ import (
 	"upper.io/db/util/sqlutil"
 )
 
-const Driver = `mysql`
+const Adapter = `mysql`
 
 var (
 	// Format for saving dates.
@@ -101,7 +101,7 @@ func init() {
 		mysqlSelectCountLayout,
 	}
 
-	db.Register(Driver, &Source{})
+	db.Register(Adapter, &Source{})
 }
 
 func (self *Source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Result, error) {
diff --git a/mysql/database_test.go b/mysql/database_test.go
index 9f41024ad9418b42c00d8aca7fa0fa13e0a50155..c08bc47c70bfe64ac676ca1862dff0f5dc8c416b 100644
--- a/mysql/database_test.go
+++ b/mysql/database_test.go
@@ -105,7 +105,7 @@ func TestOpenFailed(t *testing.T) {
 	var err error
 
 	// Attempt to open an empty database.
-	if _, err = db.Open(Driver, db.Settings{}); err == nil {
+	if _, err = db.Open(Adapter, db.Settings{}); err == nil {
 		// Must fail.
 		t.Fatalf("Expecting an error.")
 	}
@@ -119,7 +119,7 @@ func TestTruncate(t *testing.T) {
 	var col db.Collection
 
 	// Opening database.
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -161,7 +161,7 @@ func TestAppend(t *testing.T) {
 	var artist db.Collection
 	var total uint64
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -233,7 +233,7 @@ func TestResultCount(t *testing.T) {
 	var artist db.Collection
 	var total uint64
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -264,7 +264,7 @@ func TestResultFetch(t *testing.T) {
 	var sess db.Database
 	var artist db.Collection
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -427,7 +427,7 @@ func TestUpdate(t *testing.T) {
 	var sess db.Database
 	var artist db.Collection
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -516,7 +516,7 @@ func TestFunction(t *testing.T) {
 	var artist db.Collection
 	var total uint64
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -569,7 +569,7 @@ func TestRemove(t *testing.T) {
 	var sess db.Database
 	var artist db.Collection
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -616,7 +616,7 @@ func TestRawRelations(t *testing.T) {
 		Created       time.Time `db:"created"`
 	}
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -777,7 +777,7 @@ func TestDataTypes(t *testing.T) {
 	var id interface{}
 	var exists uint64
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -830,7 +830,7 @@ func BenchmarkAppendRawSQL(b *testing.B) {
 	var err error
 	var sess db.Database
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		b.Fatalf(err.Error())
 	}
 
@@ -855,7 +855,7 @@ func BenchmarkAppendRawSQL(b *testing.B) {
 // Contributed by wei2912
 // See: https://github.com/gosexy/db/issues/20#issuecomment-20097801
 func BenchmarkAppendUpper(b *testing.B) {
-	sess, err := db.Open(Driver, settings)
+	sess, err := db.Open(Adapter, settings)
 
 	if err != nil {
 		b.Fatalf(err.Error())
@@ -884,7 +884,7 @@ func BenchmarkAppendTxRawSQL(b *testing.B) {
 	var sess db.Database
 	var tx *sql.Tx
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		b.Fatalf(err.Error())
 	}
 
@@ -917,7 +917,7 @@ func BenchmarkAppendTxUpper(b *testing.B) {
 	var sess db.Database
 	var err error
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		b.Fatalf(err.Error())
 	}
 
@@ -958,7 +958,7 @@ func BenchmarkAppendTxUpperMap(b *testing.B) {
 	var sess db.Database
 	var err error
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		b.Fatalf(err.Error())
 	}
 
diff --git a/mysql/result.go b/mysql/result.go
index 1f4b3a89f54643ec0cffd6486e55183963b36104..614bfabfd2b3d11d2c5124d90ff77864b86aa97c 100644
--- a/mysql/result.go
+++ b/mysql/result.go
@@ -60,6 +60,12 @@ func (self *Result) setCursor() error {
 	return err
 }
 
+// Sets conditions for reducing the working set.
+func (self *Result) Where(terms ...interface{}) db.Result {
+	self.where, self.arguments = whereValues(terms)
+	return self
+}
+
 // Determines the maximum limit of results to be returned.
 func (self *Result) Limit(n uint) db.Result {
 	self.limit = sqlgen.Limit(n)
@@ -203,10 +209,13 @@ func (self *Result) Update(values interface{}) error {
 		cvs = append(cvs, sqlgen.ColumnValue{sqlgen.Column{ff[i]}, "=", sqlPlaceholder})
 	}
 
+	vv = append(vv, self.arguments...)
+
 	_, err = self.table.source.doExec(sqlgen.Statement{
 		Type:         sqlgen.SqlUpdate,
 		Table:        sqlgen.Table{self.table.Name()},
 		ColumnValues: cvs,
+		Where:        self.where,
 	}, vv...)
 
 	return err