diff --git a/src/sqlfluff/dialects/dialect_tsql.py b/src/sqlfluff/dialects/dialect_tsql.py
index 489ea835bc7..500ba82aae2 100644
--- a/src/sqlfluff/dialects/dialect_tsql.py
+++ b/src/sqlfluff/dialects/dialect_tsql.py
@@ -2162,8 +2162,9 @@ class FileSegment(BaseFileSegment):
class DeleteStatementSegment(BaseSegment):
"""A `DELETE` statement.
- DELETE FROM
[ WHERE ]
+ https://docs.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql?view=sql-server-ver15
Overriding ANSI to remove StartsWith logic which assumes statements have been delimited
+ and to allow for Azure Synapse Analytics-specific DELETE statements
"""
type = "delete_statement"
@@ -2171,6 +2172,7 @@ class DeleteStatementSegment(BaseSegment):
# definitely a statement, we just don't know what type yet.
match_grammar = Sequence(
"DELETE",
+ Ref("TableReferenceSegment", optional=True), # Azure Synapse Analytics-specific
Ref("FromClauseSegment"),
Ref("WhereClauseSegment", optional=True),
Ref("DelimiterSegment", optional=True),
diff --git a/test/fixtures/dialects/tsql/delete_azure_synapse_analytics.sql b/test/fixtures/dialects/tsql/delete_azure_synapse_analytics.sql
new file mode 100644
index 00000000000..ea0e66b1a8e
--- /dev/null
+++ b/test/fixtures/dialects/tsql/delete_azure_synapse_analytics.sql
@@ -0,0 +1,5 @@
+DELETE dbo.Table2
+FROM dbo.Table2
+ INNER JOIN dbo.Table1
+ ON (dbo.Table2.ColA = dbo.Table1.ColA)
+ WHERE dboTable2.ColA = 1;
diff --git a/test/fixtures/dialects/tsql/delete_azure_synapse_analytics.yml b/test/fixtures/dialects/tsql/delete_azure_synapse_analytics.yml
new file mode 100644
index 00000000000..3b33a9425e6
--- /dev/null
+++ b/test/fixtures/dialects/tsql/delete_azure_synapse_analytics.yml
@@ -0,0 +1,63 @@
+# YML test files are auto-generated from SQL files and should not be edited by
+# hand. To help enforce this, the "hash" field in the file must match a hash
+# computed by SQLFluff when running the tests. Please run
+# `python test/generate_parse_fixture_yml.py` to generate them after adding or
+# altering SQL files.
+_hash: d2c61d379d8c39938482d02df983b8690fa6689e21120deb05d50cc4d810664a
+file:
+ batch:
+ statement:
+ delete_statement:
+ keyword: DELETE
+ table_reference:
+ - identifier: dbo
+ - dot: .
+ - identifier: Table2
+ from_clause:
+ keyword: FROM
+ from_expression:
+ from_expression_element:
+ table_expression:
+ table_reference:
+ - identifier: dbo
+ - dot: .
+ - identifier: Table2
+ join_clause:
+ - keyword: INNER
+ - keyword: JOIN
+ - from_expression_element:
+ table_expression:
+ table_reference:
+ - identifier: dbo
+ - dot: .
+ - identifier: Table1
+ - join_on_condition:
+ keyword: 'ON'
+ expression:
+ bracketed:
+ start_bracket: (
+ expression:
+ - column_reference:
+ - identifier: dbo
+ - dot: .
+ - identifier: Table2
+ - dot: .
+ - identifier: ColA
+ - comparison_operator: '='
+ - column_reference:
+ - identifier: dbo
+ - dot: .
+ - identifier: Table1
+ - dot: .
+ - identifier: ColA
+ end_bracket: )
+ where_clause:
+ keyword: WHERE
+ expression:
+ column_reference:
+ - identifier: dboTable2
+ - dot: .
+ - identifier: ColA
+ comparison_operator: '='
+ literal: '1'
+ statement_terminator: ;