2016-05-13 72 views
0

示例数据库中的表,员工:如何获得我在SQL Server查询中选择的最后一列的ID?

id  market  firstName 
1  1   John 
2  2   James 
3  1   Sally 
4  1   Mary 
5  2   Susan 

如果我写了下面的查询,

SELECT firstName 
FROM employees 
WHERE market = 1 

我会得到下面的数组:

array("John", "Sally", "Mary") 

我使用ODBC连接到一个sql服务器,然后odbc_fetch_array检索结果。不过,我想也有最后firstNameid拉升,例如:

array("John", "Sally", "Mary", 4) 

我已经知道如何与两个查询做到这一点,但我希望提高性能,我会怎么做这一个查询?

如果很重要,我使用odbc连接到一个sql服务器。

谢谢。

+0

我想如果你使用第二个查询获取该值那将是非常容易的。它是可行的吗?还是只有一个查询? – nanocv

+2

'SELECT id,firstname FROM employees WHERE market = 1'不会影响查询的性能。 – Stack

+0

是的,其实我同意@StackExchanger – nanocv

回答

2

既然你不能在数组中混合使用数据类型,那么如果最后一个id返回为一个字符串的话,我会认为它是可以的。

在这种情况下,你可以使用全部UNION:

SELECT firstName 
FROM employees 
WHERE market = 1 
UNION ALL 
SELECT CAST(MAX(id) AS varchar(31)) 
FROM employees 
WHERE market = 1 
+0

谢谢你的帮助。此语句不会返回我拉取的最后一个人的ID,它会返回数据库中最后一列的ID。因此,在这个例子中,它会返回数组(“John”,“Sally”,“Mary”,“5”),我希望它返回数组(“John”,“Sally”,“Mary”,“ 4" )。 –

+1

您是否包含最后一个'WHERE market = 1'?你得到的结果应该是不可能的,如果你做到了。 –

+0

其实我真正的查询有一个前200名,我忘了把第二次200。我看到这是有效的。非常感谢你!! –

相关问题