如何组合和排序列? MySQL,CF8,MS Access 2003

时间:2010-08-18 19:46:27

标签: mysql ms-access sql-order-by coldfusion-8

我想通过将两列名称,columnA和columnB相加来生成一个按字母顺序排列的名称列表。

我试过这个:

<cfquery name="listAuthors" datasource="hhLibrary">
SELECT title, (a1_Fname + a2_Fname) AS ColumnA, (a1_Lname + a2_Lname) AS ColumnB
FROM books
WHERE ColumnB LIKE '#firstletter#%'
ORDER BY ColumnB
</cfquery>

这是错误代码: 参数太少。预期1.

任何帮助都非常感激。

oregonHoney

2 个答案:

答案 0 :(得分:0)

更新

select *
from (
    SELECT title, a1_Lname as Name
    FROM books  
    WHERE a1_Lname LIKE '#firstletter#%' 
    UNION ALL
    SELECT title, a2_Lname as Name
    FROM books  
    WHERE a2_Lname LIKE '#firstletter#%' 
) a
ORDER BY Name

答案 1 :(得分:0)

在Jet / ACE SQL中,您不能在字段名称别名上放置WHERE子句或ORDER BY - 您必须重复别名所引用的表达式。所以,替换这个:

  SELECT title, (a1_Fname + a2_Fname) AS ColumnA, (a1_Lname + a2_Lname) AS ColumnB
  FROM books
  WHERE ColumnB LIKE '#firstletter#%'
  ORDER BY ColumnB

......用这个:

  SELECT title, (a1_Fname + a2_Fname) AS ColumnA, (a1_Lname + a2_Lname) AS ColumnB
  FROM books
  WHERE a1_Lname + a2_Lname LIKE '#firstletter#%'
  ORDER BY a1_Lname + a2_Lname

如果安装了Access,我强烈建议您在QBE中的交互式Access中测试SQL。如果您只是在Access中尝试过,那么您很快就会发现这种情况。

相关问题