0

有没有办法在 Google Fusion Tables Query 上实现这一点?

...WHERE (('Field 1' =  'Value 1') OR ('Field 2' = 'Value 1'))

我知道 OR 没有在 Google Fusion Tables 上实现,但我想知道这个查询是否可行。谢谢。

4

2 回答 2

0

对于数量相对较少的条件,您可以使用 IN,如SQL 参考中所述。所以在你的例子中

WHERE 'Field 1' IN ('Value 1', 'Value 2')
于 2013-10-31T23:03:13.590 回答
0

实际上有一些解决方法可以解决OR子句的缺失问题。它们是否值得付出努力,我将把它留给读者来判断。

解决这个问题的一种方法是用AND子句来表达OR子句。确切地说是三个AND子句,我们最终得到 3 个不同的融合表查询,如下所示:

SELECT * FROM <table_id> WHERE 'Field 1' = 'Value 1' AND 'Field 2' = 'Value 1'

SELECT * FROM <table_id> WHERE 'Field 1' = 'Value 1' AND 'Field 2' NOT EQUAL TO 'Value 1'

SELECT * FROM <table_id> WHERE 'Field 1' NOT EQUAL TO 'Value 1' AND 'Field 2' = 'Value 1'

如果在融合表中可用,这三个查询的组合结果实际上就是OR查询的结果。

另一种方法是执行OR子句(又名NOR)的逆操作,如下所示:

SELECT ROWID FROM <table_id> WHERE 'Field 1' NOT EQUAL TO 'Value 1' AND 'Field 2' NOT EQUAL TO 'Value 1'

此查询返回将被 OR 子句丢弃的行的 ROWID。因此,如果我们要获取表中所有 ROWID 的列表并删除由 NOR 查询生成的那些 id,我们将留下 OR 查询将产生的行 id。我们可以反过来使用这些 ROWID 编写查询以提取完整的行数据。

于 2016-07-21T03:26:52.340 回答