diff --git a/src/query/fns/label.rs b/src/query/fns/label.rs
index 6caa4bc0e37f66f638b71b0629ce08db2f8e52c2..9bd6ee87285abb0eda14ee83314c5267cc69d10c 100644
--- a/src/query/fns/label.rs
+++ b/src/query/fns/label.rs
@@ -7,6 +7,15 @@ use crate::query::{
     ops::Operable,
 };
 
+/// MetricsQL's alias label manipulation query function
+#[inline]
+pub fn mql_alias<'a>(
+    qry_expr: impl Operable + 'a,
+    name: &'a str,
+) -> QryFunc<impl Fn(&mut fmt::Formatter) -> fmt::Result + 'a> {
+    qry_fn!(alias, "{qry_expr}, \"{name}\"")
+}
+
 /// MetricsQL's label_set label manipulation query function
 #[inline]
 pub fn mql_label_set<'a>(
@@ -126,4 +135,10 @@ mod tests {
         let qry = mql_label_set(Metric::new("metric"), &["label", "value"]).to_string();
         assert_eq!(qry, r#"label_set(metric,"label","value")"#);
     }
+
+    #[test]
+    fn label_alias() {
+        let qry = mql_alias(Metric::new("metric"), "alias").to_string();
+        assert_eq!(qry, "alias(metric, \"alias\")");
+    }
 }
diff --git a/tests/fns.rs b/tests/fns.rs
index c81ceb02109f943bec4460ca983818de752862b6..55e2a9793c87faa1bb5dcb6612132b5627422003 100644
--- a/tests/fns.rs
+++ b/tests/fns.rs
@@ -107,6 +107,13 @@ async fn mql_label_map() {
     utils::send_query(query).await.unwrap();
 }
 
+#[cfg(feature = "metricsql")]
+#[tokio::test]
+async fn mql_alias() {
+    let query = label::mql_alias(Metric::new("metric"), "alias");
+    utils::send_query(query).await.unwrap();
+}
+
 #[cfg(feature = "metricsql")]
 label_tests!(
     mql_label_set,