Fusion 表查询的多个 sort/filter 个因素

Multiple sort/filter factors on a Fusion tables query

我想对我的 Google Fusion Table 执行查询。假设我正在使用以下变量组装字符串。如果我在 var sort_factors 中只有一个参数,则一切正常。如何向 sort_factors 添加第二个参数,以便(例如)按日期降序排序并将响应限制为 1000 行?

var base         = 'https://www.googleapis.com/fusiontables/v2/query?',
    columns      = 'sql=SELECT+Lat,Lng,Date,Username,TripID',
    from         = '+from+XXXXXXXXXXXXXXXXXXX',
    sort_factors = '+LIMIT+1000+AND+ORDER+BY+Date+DESC',
    key          = '&key=XXXXXXXXXXXXXXXXXXX';

我不知道这是否能完全使查询正常工作,但您遗漏了一些 +:

的空格
var base         = 'https://www.googleapis.com/fusiontables/v2/query?',
    columns      = 'sql=SELECT Lat,Lng,Date,Username,TripID ',
    from         = '+from XXXXXXXXXXXXXXXXXXX ',
    sort_factors = '+LIMIT 1000 AND ORDER BY Date DESC ',
    key          = '&key=XXXXXXXXXXXXXXXXXXX';

LIMIT 不是排序,那里的 AND 是错误的,LIMIT 必须是 SQL:

中的最后一个子句
'+ORDER+BY+Date+DESC+LIMIT+1000'

子句的顺序是固定的,必须是:

  1. 哪里
  2. 订单
  3. 极限

你的代码好像是Javascript,你最好帮自己一个忙,让JS处理编码。

可能的方法:

var base = 'https://www.googleapis.com/fusiontables/v2/query',
  columns = 'SELECT Lat,Lng,Date,Username,TripID',
  from = 'from fusionTableID',
  //apply a filter when you want to
  where = '',
  //group the results when you want to
  groupby = '',
  orderby = 'ORDER BY DATE DESC',
  limit = 'LIMIT 1000',
  key = 'yourApiKey',
  //do you want a JSONP-response? Add a callback-parameter
  callback = '&callback=functionName',
  //prepare the query;
  sql = encodeURIComponent([columns, from, where, groupby, orderby, limit].join(' ')),
  //prepare the url
  url = [base, '?sql=', sql, callback, '&key=', key].join('');

//see what we got
document.body.appendChild(document.createTextNode(url));
body {
  font-family: Monospace
}

使用所有 4 个子句的演示:http://jsfiddle.net/doktormolle/fc47243g/