[英]Simple way to select a few rows of data from table in BigQuery?
[英]Is exist a simple way to select all data from specific table
我有两个表:A,B。我需要从B中选择所有数据。我可以这样做
SELECT id, b1, b2, ... b20 FROM A,B WHERE A.id = B.id;
这不是很酷的解决方案。 如果我修改B的数据库,我将需要更新此语句。 存在类似的东西?
SELECT *(B)
它从B中选择了所有数据,但未从A中选择任何数据。
我的数据库
A
id
a1
a2
...
a20
B
id
b1
b2
...
b20
使用以下查询:
SELECT * FROM B;
要么
SELECT * FROM B INNER JOIN A ON A.id = B.id;
如果你想加入表A和B.
因此,如果你想要认真地创建数据库,你不应该看到复杂的方式,而是效率和速度。 所以我给你的建议是使用JOIN
,这是从两个或多个表中选择数据的最佳解决方案,因为这种方式尽可能快,至少对于我更干净的方式,例如inserted select
。
你写道: I need to select all data from B
这意味着SELECT * FROM B
不是你写的。
我对你的建议是用这个:
SELECT * FROM A <INNER / LEFT / RIGHT / NATURAL> JOIN B ON A.id = B.id;
或选择特定列
SELECT A.column1, A.column2, ... FROM A <INNER / LEFT / RIGHT / NATURAL> JOIN B ON A.id = B.id;
注意:
NATURAL JOIN将在上面的示例中起作用,因为两个表中的主键和外键具有相同的名称。 因此,在没有匹配正确的列的情况下,您必须非常小心地使用NATURAL JOIN查询。
所以你真的应该考虑如何创建数据库以及如何使用数据库,如何从数据库中提取View数据,如何将新的潜在数据插入数据库等。
关心男人!
我怀疑其他人已经充分回答了关于从表B中选择所有字段的问题。这很好,因为你真的应该理解SQL的基础知识。 如果他们没有,我还建议你查看SQLite.org网站,以澄清SQLite理解的SQL语法。
但是,假设您已经回答了您的问题,我只想表达关于使用星号语法的两个注意事项。
首先,如果在稍后的某个日期,你向B添加一个大毛茸茸的blob(例如,一个多兆字节的图像)。 如果使用*
(或B.*
)语法从B中检索所有列,则可能会检索大量特定函数可能不需要的信息。 如果您不需要,请不要从SQLite中检索数据。
其次,您的Objective C是根据结果的列名称或根据相关列的索引号从select语句中检索数据。 如果您正在使用后者,那么使用*
语法可能会很危险,因为如果表中列的物理顺序发生变化,您可能会破坏代码。
使用命名列可以在检索过多数据方面解决内存/性能问题,并将Objective C与SQLite中表的物理实现隔离开来。 通常,我不建议开发人员在从SQL数据库中检索数据时使用*
语法。 也许这对于一个简单的项目来说不是问题,但随着项目变得更加复杂,您可能需要仔细考虑*
语法的含义。
我不知道以下查询是否可以在sqlite中工作,我知道它在Oracle中有效,但是你可以尝试一下......
SELECT B.* FROM A,B WHERE A.id = B.id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.