0

我想生成一个按字母顺序排列的名称列表,该列表是通过将两列名称(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。

非常感谢任何帮助。

俄勒冈州蜂蜜

4

2 回答 2

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 中尝试过,您很快就会发现情况就是如此。

于 2010-08-19T17:34:32.473 回答
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
于 2010-08-18T19:49:24.487 回答