2014-01-09 99 views
0

我知道这个问题已被问到,但我还没有找到解决我的具体问题的可行答案。我如何从SQL中的多列中选择不同的值?

我有一个表(在MySQL中)与4列(名,姓,帐号和组织)。在我的程序中,我想创建4个下拉列表(组合框)(每列一个)。组合框包含该列的唯一值。现在,我通过使用4个独立的SQL查询来完成它,然后填充每个组合框。我试图通过执行单个查询来获取所有值,然后在获得结果后将它们分离到组合框中,以查看是否有更快的方法。但我无法弄清楚如何用单个查询来做到这一点,我尝试了书中的每一个连接,并使用派生表和我能想到的所有东西,但没有任何工作。

基本上我的名字组合框,需要包含表中所有不同的名字,第二个组合框包含所有不同的姓氏,第三个不同的acct。数字和第四,不同的组织在任何组合框中都没有重复。

这是可能的,如果是怎样?谢谢。

这是我目前在做什么:

Select distinct firstname from t1 order by firstname; 
' populate my combo box 

Select distinct lastname from t1 order by lastname; 
; populate my combo box 

etc... 
+0

我想你可以在一个查询中返回整个数据集,并在应用程序级别处理显示逻辑。 – Strawberry

回答

1

你在做什么在这里主要是最优策略。这就是SQL的工作原理。

考虑如果您试图同时列出所有firstnamelastname条目的输出结果。你会得到6个不同的名字和8个不同的姓氏的行数? 6? 8? 48?

如果这太慢,您需要做的是正确地INDEX您的列,以便DISTINCT操作本身更快。

+0

谢谢,一切都相应编入索引。我只是试图通过在一个查询中获得某些速度,因为表中有468,000个条目,并且我查询它4次。尽管编入索引,但运行所有4个查询需要大约3秒的时间。 – user2721815

+0

听起来像你需要缓存结果。 – tadman

相关问题