# QuerySort

Sorts array elements.

## Method Signature

```
QuerySort(query=[query], sortFunc=[function:Comparator])
```

### Arguments

| Argument   | Type                  | Required | Description                                                         | Default |
| ---------- | --------------------- | -------- | ------------------------------------------------------------------- | ------- |
| `query`    | `query`               | `true`   | Query to sort                                                       |         |
| `sortFunc` | `function:Comparator` | `true`   | Sort function to use. You can alternatively pass a Java Comparator. |         |

## Examples

### Sort a query using the querySort function on a column with date values in ascending order

[Run Example](https://try.boxlang.io/?code=eJytUU1LAzEQPW9%2BxaOnBKLb%2BnFRKqxND14EqzfxEM1QAt3smmZZi%2FS%2FO1kV1rN7ecw83sfAlCVeO79zsHjvKB4Efdi63dFDXrD8Ju%2Bpl5h5p98i2UTOMMw0MyHRlqJOvqZ9Yh%2BTz6L4FEVxZ3CFheZptVlXT2tjGJhybK2c4zjH4miD29iwJYmTxXyuwQClEZpeKihRHPUo7mzauPNp4y6mjbv8f5x4gboWZYl9ExN8EsMzH3mRGL9ZQ6IKB8Smr%2FTvdAuF5Q34nkipi2FoXzV1ayM3Zunp6Do9WMZMrj7%2B9LuubnN%2FH30iw8vf%2Fqz6Ar9hrUI%3D)

```java
// build a query
exampleQuery = queryNew( "id,createdDate", "integer,timestamp", [
	{
		ID : 1,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	},
	{
		ID : 2,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	},
	{
		ID : 3,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	},
	{
		ID : 4,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	},
	{
		ID : 5,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	}
] );
// sort it
querySort( exampleQuery, ( Any rowA, Any rowB ) => {
	return dateCompare( rowA.CREATEDDATE, rowB.CREATEDDATE );
} );
// dump it
writeDump( exampleQuery );

```

### Sort a query using a sort member function on a column with date values in descending order

[Run Example](https://try.boxlang.io/?code=eJytUstqwzAQPFtfMeQkgRInfVxaUnCjHHopNPRWclCrJQhi2VVk3FDy7131Ac65vgy7wzwWpLLEa%2Bf3DhbvHcWjoA9bt3t6yguWP%2BQj9RIT7%2FRbJJvIGYaJZiYk2lHUydd0SOxj8kUUn6IoHgxusNA8rTbr6nltDANTjq2VcxznWBxtcBsbdiQxXcznGgxQGqHppYISxUkP4i7GjbscN%2B5q3Ljr%2F8eJLdStKEscmpjg09nbzjIpIVGFI2LTV%2FpvuofC8g58SaTUxYCpzM2rpm5t5LYsng0u09%2BmIQPFvaffctfVbS7vo09keJE4%2B2Os%2BgJlmauM)

```java
// build a query
exampleQuery = queryNew( "id,createdDate", "integer,timestamp", [
	{
		ID : 1,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	},
	{
		ID : 2,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	},
	{
		ID : 3,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	},
	{
		ID : 4,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	},
	{
		ID : 5,
		CREATEDDATE : dateAdd( "d", randRange( -100, 100 ), now() )
	}
] );
// sort it
exampleQuery.sort( ( Any rowA, Any rowB ) => {
	return -(dateCompare( rowA.CREATEDDATE, rowB.CREATEDDATE ));
} );
// dump it
writeDump( exampleQuery );

```

### Sort a query using a sort member function on a column with string values in ascending order

[Run Example](https://try.boxlang.io/?code=eJxt0T1rwzAQBuDZ%2BhWHJwVETPqxpKSQxB28pF%2FZSgfZOlKRWHLPcp205L9XSlpwjLe7lwdeuEsSyBu9UyDhs0E6MNzLstrhc1hgdg5X2HKItRIK64J05bQ1sfCJcbhBEl%2BSig9JPnpj0Q%2BLoiyFKUyEn9KH1%2BVL9rTOHlc%2BipXdxCw6ig67GmCFdH12PcByTarvbgbcN%2BYk%2B%2FB2ANZGbjFA9g6jO5YkUFtyoN3FWcYh5MBhbg5Atp2L%2F2kBI5jdg%2B8gdA0ZKGxZSUJ%2BYuNOmzjxbhIKj3%2Btqimr0NqSdpj6hcPFX7z6BVXyeHk%3D)

```java
// build a query
exampleQuery = queryNew( "id,description", "integer,varchar", [
	{
		ID : 1,
		DESCRIPTION : "dog"
	},
	{
		ID : 2,
		DESCRIPTION : "cat"
	},
	{
		ID : 3,
		DESCRIPTION : "bird"
	},
	{
		ID : 4,
		DESCRIPTION : "zebra"
	},
	{
		ID : 5,
		DESCRIPTION : "snake"
	}
] );
// sort it
exampleQuery.sort( ( Any rowA, Any rowB ) => {
	return compare( rowA.DESCRIPTION, rowB.DESCRIPTION );
} );
// dump it
writeDump( exampleQuery );

```

### Sort a query using the querySort function on a column with string values in descending order

[Run Example](https://try.boxlang.io/?code=eJxtkMtOhEAQRdf0V9ywgqSV%2BNpoxmQUF2zGx7gzLhq6MnYcGiwacTTz7zaoCRJ2996cykkqSZC3Zquh8NYS7wR9qLLe0n1fsPgZV9RFCI2WmpqCTe1MZUPpF%2BtoQyzfFRcviv30JIIvEQRZinMcSZ%2FSm%2FX1Q3b3mN2u%2FBTqahOKYC9H2PEMVig3xU5msNywnnKnM9wn5aym4NkM2Fj1Sj0onhFfiCRBU7GDcWL4w9qXCOMPSURY2h246pbyL10hxuIS3sTkWrY4iIqqrBVTNICHI6scDsYLYm%2Fe%2F%2Bp1W9a9vmPjKPXlv76nvgGugXsr)

```java
// build a query
exampleQuery = queryNew( "id,description", "integer,varchar", [
	{
		ID : 1,
		DESCRIPTION : "dog"
	},
	{
		ID : 2,
		DESCRIPTION : "cat"
	},
	{
		ID : 3,
		DESCRIPTION : "bird"
	},
	{
		ID : 4,
		DESCRIPTION : "zebra"
	},
	{
		ID : 5,
		DESCRIPTION : "snake"
	}
] );
// sort it
querySort( exampleQuery, ( Any rowA, Any rowB ) => {
	return -(compare( rowA.DESCRIPTION, rowB.DESCRIPTION ));
} );
// dump it
writeDump( exampleQuery );

```

### Sort a query using the querySort function on a column with numeric values in ascending order

[Run Example](https://try.boxlang.io/?code=eJxt0EtPwkAQB%2FBz91NMemqTlYqPi1gIWA%2B94ANvxsO2O4GNZVunWyoavru7oAZrbzP%2F%2FJJ5RBFkjSokCHhrkLYM38W6KvDBNRAfwjm2AfhKcol1TqoyqtQ%2Bt4k2uETiG0H5SpCNnpn3yTwvTeAKzrmtktvFzWN6%2F5TezW3ky3LpM2%2FHj9hlD8uF6bKLHpYpkl037HEfmJHowrMeWGvxig6yFwhHLIqgLsmAMmz%2Fh4VtAjj%2BEIcApnoLVLZT%2FlPNIIR4DHYSoWlIw0YUwZ4M7OQQrn%2BD2SGYwMnQju%2BwOP7vTt2FI7b73k4268pt15IymNjm73ZOfQEvm4Fb)

```java
// build a query
exampleQuery = queryNew( "id,description", "integer,varchar", [
	{
		ID : 3,
		DESCRIPTION : "dog"
	},
	{
		ID : 5,
		DESCRIPTION : "cat"
	},
	{
		ID : 4,
		DESCRIPTION : "bird"
	},
	{
		ID : 1,
		DESCRIPTION : "zebra"
	},
	{
		ID : 2,
		DESCRIPTION : "snake"
	}
] );
// sort it
querySort( exampleQuery, ( Any rowA, Any rowB ) => {
	return val( rowA.ID ) < val( rowB.ID ) ? -1 : val( rowA.ID ) == val( rowB.ID ) ? 0 : 1;
} );
// dump it
writeDump( exampleQuery );

```

### Additional Examples

```java
people = QueryNew( "name,dob,age", "varchar,date,int", [ 
	[
		"Susi",
		CreateDate( 1970, 1, 1 ),
		70
	],
	[
		"Urs",
		CreateDate( 1995, 1, 1 ),
		40
	],
	[
		"Fred",
		CreateDate( 1960, 1, 1 ),
		50
	],
	[
		"Jim",
		CreateDate( 1988, 1, 1 ),
		30
	]
] );
Dump( var=people, label="people - original query" );
QuerySort( people, "name", "asc" );
dump( var=people, label="people - sorted by name" );
QuerySort( people, ( Any row1, Any row2 ) => {
	return compare( arguments.ROW1.AGE, arguments.ROW2.AGE );
} );
dump( var=people, label="people - sorted by age" );

```

## Related

* [QueryAddColumn](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryaddcolumn)
* [QueryAddRow](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryaddrow)
* [QueryAppend](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryappend)
* [QueryClear](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryclear)
* [QueryColumnArray](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querycolumnarray)
* [QueryColumnCount](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querycolumncount)
* [QueryColumnData](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querycolumndata)
* [QueryColumnExists](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querycolumnexists)
* [QueryColumnList](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querycolumnlist)
* [QueryCurrentRow](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querycurrentrow)
* [QueryDeleteColumn](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querydeletecolumn)
* [QueryDeleteRow](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querydeleterow)
* [QueryEach](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryeach)
* [QueryEvery](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryevery)
* [QueryFilter](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryfilter)
* [QueryGetCell](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querygetcell)
* [QueryGetResult](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querygetresult)
* [QueryInsertAt](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryinsertat)
* [QueryKeyExists](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querykeyexists)
* [QueryMap](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querymap)
* [QueryNew](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querynew)
* [QueryNone](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querynone)
* [QueryPrepend](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryprepend)
* [QueryRecordCount](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryrecordcount)
* [QueryRecordCount](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryrecordcount)
* [QueryReduce](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryreduce)
* [QueryRegisterFunction](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryregisterfunction)
* [QueryReverse](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryreverse)
* [QueryRowData](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryrowdata)
* [QueryRowSwap](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryrowswap)
* [QuerySetCell](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querysetcell)
* [QuerySetRow](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querysetrow)
* [QuerySlice](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/queryslice)
* [QuerySome](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/query/querysome)
