我需要这个SQL
(在mysql控制台中完美运行):
SELECT LEFT(authors.last_name,1) AS first_char
在"bookshelf.js"
中。
虽然我走了这么远:
let result = await qb.column('last_name').select().from('authors').as('first_char');
我无法获得
let result = await qb.column('last_name').select('LEFT(authors.last_name,1)').from('authors').as('first_char');
这一切。
它导致以下错误:
Error: ER_BAD_FIELD_ERROR: Unknown column 'LEFT(authors.last_name,1)' in 'field list'
这对我来说没有意义,因为列authors.last_name
仍然存在。
答案 0 :(得分:0)
.select()
可以防止SQL注入,因此您不能只是将随机SQL传递给SQL并期望它能工作。您需要为此使用原始表达式:
qb.column('last_name').select(qb.raw('LEFT(authors.last_name,1)')).from('authors').as('first_char');
在这一点上,从技术上讲,这不是书架上的问题,因为查询生成器只是个纽结。