2014-09-25 33 views
0

使用官方fusion tables php api及以下the docs,如果我使用,例如:融合表API選擇似乎不工作「ROWID> N,其中」

$fusionsql = "select ROWID, name, email from $docID WHERE ROWID > 1244"; 

它返回的數據只是 ROWID 1244,但沒有更多。如果它要返回一行,我預計它會是ROWID 1245. 其他聲明按預期工作。

作爲補充獎金,我剛剛閱讀getting started docs錯誤,還是通過頁內搜索「在表格中插入新行」找到的表中存在錯誤?它說:

POST與特定的ROWID,在那裏你在數據傳遞了一個新行:

和示例代碼給出的是:

INSERT INTO <table_id> (<column_name> {, <column_name>}*) 
    VALUES (<value> {, <value>}*) 

我認爲ROWID是內部生成的東西?此外,上述聲明似乎實際上沒有ROWID的選項。

編輯:一種解決方法是打開瀏覽器表了,然後手動制定出什麼樣的行號也通過交叉參考其他數據失敗,然後使用,例如,OFFSET 350在您的查詢。

顯然,這是一個PITA,但它讓我在緊急情況下進行。仍然想知道爲什麼>失敗。

謝謝。

+0

您用於查詢的表中有多少行? – 2014-09-25 09:50:24

+0

只有500左右;但是,當行被添加和刪除時,ROWID已經增加。前350行很順利,但是我的PHP更新腳本超時了,所以我只想繼續前進,完成最後的150行。 – digitaltoast 2014-09-25 11:56:43

+0

另一個奇怪的是,該ROWID跳躍,如: 「99」 「100」 「1001」 「1002」 – digitaltoast 2014-09-25 14:49:43

回答

1

每您鏈接到API文檔,ROWID只能用一個等式謂詞中使用:

<row_condition>在WHERE子句中使用。語法是:ROWID = '<串>'

ROWID - 使用您從前面的SELECT或 INSERT獲得行ID。 '<字符串>' - 引號中的文本字符串。如果字符串包含 引號字符,則在每個引號字符前加一個反斜槓(\)。

ROWID是內部生成的,沒有保證的含義或順序。它也是更新或刪除現有行的唯一方法,因此是上述文檔。

+0

確定 - 感謝澄清。對我來說,你看起來很奇怪,你不能這樣做。這意味着要搜索>,我必須生成一個備用索引列?另外,對於遲到的答覆,道歉讓我沒有通知任何答案! – digitaltoast 2014-09-27 10:31:51

+1

將rowid想象成除了唯一性之外沒有語義的blob。如果你想跟蹤插入順序,那麼你最好包括一個計數器或時間戳列,並在此基礎上過濾;那麼你確切地知道它的意思。 – 2014-09-27 20:32:16