diff --git a/query.go b/query.go
index 2c351b9..1472a54 100644
--- a/query.go
+++ b/query.go
@@ -138,6 +138,9 @@ type Rows struct {
 }
 
 func (q *Query) ScanMulti() (*Rows, error) {
+	if q.err != nil {
+		return nil, q.err
+	}
 	return &Rows{
 		query: q,
 	}, nil
diff --git a/query_test.go b/query_test.go
index 13b34c0..16269ec 100644
--- a/query_test.go
+++ b/query_test.go
@@ -133,3 +133,28 @@ func TestTransactionRollback(t *testing.T) {
 	db.Query("select value from mytable where key = 'foo'").MustScanSingle(&value)
 	require.Equal(t, "bar", value, "expected original value after rollback")
 }
+
+func TestQueryWithInClause(t *testing.T) {
+	db := openTestDb(t)
+	// Insert additional test rows
+	db.Query("insert into mytable(key, value) values ('key1', 'value1')").MustExec()
+	db.Query("insert into mytable(key, value) values ('key2', 'value2')").MustExec()
+
+	// Execute query with IN clause
+	rows, err := db.Query("select key, value from mytable where key in (?, ?)").Bind("foo", "key2").ScanMulti()
+	require.NoError(t, err)
+	defer rows.MustFinish()
+
+	// Check results
+	results := make(map[string]string)
+	for rows.MustNext() {
+		var key, value string
+		rows.MustScan(&key, &value)
+		results[key] = value
+	}
+
+	// Verify we got exactly the expected results
+	require.Equal(t, 2, len(results), "expected 2 matching rows")
+	require.Equal(t, "bar", results["foo"], "unexpected value for key 'foo'")
+	require.Equal(t, "value2", results["key2"], "unexpected value for key 'key2'")
+}