有没有办法在 Google Fusion Tables Query 上实现这一点?
...WHERE (('Field 1' = 'Value 1') OR ('Field 2' = 'Value 1'))
我知道 OR 没有在 Google Fusion Tables 上实现,但我想知道这个查询是否可行。谢谢。
有没有办法在 Google Fusion Tables Query 上实现这一点?
...WHERE (('Field 1' = 'Value 1') OR ('Field 2' = 'Value 1'))
我知道 OR 没有在 Google Fusion Tables 上实现,但我想知道这个查询是否可行。谢谢。
对于数量相对较少的条件,您可以使用 IN,如SQL 参考中所述。所以在你的例子中
WHERE 'Field 1' IN ('Value 1', 'Value 2')
实际上有一些解决方法可以解决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 编写查询以提取完整的行数据。