diff --git a/docs/sql-data-sources-jdbc.md b/docs/sql-data-sources-jdbc.md
index 057e8217241a..0f2bc4941744 100644
--- a/docs/sql-data-sources-jdbc.md
+++ b/docs/sql-data-sources-jdbc.md
@@ -64,9 +64,9 @@ the following case-insensitive options:
Example:
spark.read.format("jdbc")
-    .option("dbtable", "(select c1, c2 from t1) as subq")
-    .option("partitionColumn", "subq.c1"
-    .load()
+ .option("url", jdbcUrl)
+ .option("query", "select c1, c2 from t1")
+ .load()
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JDBCOptions.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JDBCOptions.scala
index 7dfbb9d8b5c0..b4469cb538fa 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JDBCOptions.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JDBCOptions.scala
@@ -137,9 +137,13 @@ class JDBCOptions(
|the partition columns using the supplied subquery alias to resolve any ambiguity.
|Example :
|spark.read.format("jdbc")
- | .option("dbtable", "(select c1, c2 from t1) as subq")
- | .option("partitionColumn", "subq.c1"
- | .load()
+ | .option("url", jdbcUrl)
+ | .option("dbtable", "(select c1, c2 from t1) as subq")
+ | .option("partitionColumn", "c1")
+ | .option("lowerBound", "1")
+ | .option("upperBound", "100")
+ | .option("numPartitions", "3")
+ | .load()
""".stripMargin
)
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala
index 7fa0e7fc162c..71e83767964a 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala
@@ -1348,9 +1348,13 @@ class JDBCSuite extends QueryTest
|the partition columns using the supplied subquery alias to resolve any ambiguity.
|Example :
|spark.read.format("jdbc")
- | .option("dbtable", "(select c1, c2 from t1) as subq")
- | .option("partitionColumn", "subq.c1"
- | .load()
+ | .option("url", jdbcUrl)
+ | .option("dbtable", "(select c1, c2 from t1) as subq")
+ | .option("partitionColumn", "c1")
+ | .option("lowerBound", "1")
+ | .option("upperBound", "100")
+ | .option("numPartitions", "3")
+ | .load()
""".stripMargin
val e5 = intercept[RuntimeException] {
sql(