【问题标题】:using ROWID and asterisk in google fusion tables API SELECT statement在谷歌融合表 API SELECT 语句中使用 ROWID 和星号
【发布时间】:2012-07-17 04:35:37
【问题描述】:

我正在尝试获取 ROWID 以及 Google Fusion Tables 中每一行的所有数据。

这个选择语句:

SELECT *, ROWID FROM [tableID] 

导致此错误:

"domain": "fusiontables",
"reason": "badQueryCouldNotParse",
"message": "Invalid query: Parse error near '*' (line 1, position 14).",
"locationType": "parameter",
"location": "q"

如果我指定列名,例如...

SELECT ROWID, name, city, suburb, etc FROM [tableID] 

...其中 etc 是所有列名,它工作正常。问题是,我有很多列名,并且会随着时间的推移添加/删除它们,并且不想每次都更新该 select 语句。

可以使用 ROWID + 星号通配符 SELECT 语句吗?

(我意识到我可以通过使用 DESCRIBE 查询来获取所有列名并从那里创建我的查询来做到这一点,但如果可能的话,我希望将调用次数降至最低)。

【问题讨论】:

  • 我认为目前您必须使用解决方法进行两次调用(使用 DESCRIBE 或新的 REST-API)。也许您可以缓存结果以减少每天的调用量(即每天检查是否有新的/不同的列)。
  • 谢谢奥迪。缓存的好主意——我现在会采用该解决方案。
  • 确实很奇怪。我不介意 Fusion Tables 是否在每个查询中都返回了 ROWID,无论它是否被请求。但是能够得到它或 *(如果你知道每个列名,或者两者都得到)有点烦人。
  • 我正在尝试与 OP 完全相同。有没有人在这方面取得了进展,还是我只需要查询列名并列出它们?
  • 嗨@Phlucios - 我的代码仍在使用上述系统(使用 DESCRIBE 调用,然后使用它来创建我的 SELECT 查询)。不过,我最近没有机会重新检查 API,所以如果您找到解决原始问题的更简单方法,请告诉我们。

标签: google-fusion-tables


【解决方案1】:

你应该使用这个:

SELECT ROWID FROM [Table ID] WHERE [NameColum]='Data'

您将从找到“数据”的那一行中获得ROWID。然后你可以使用ROWID 来调用整行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多