什么更好,什么是差别?
SELECT * FROM TABLE_A A WHERE A.ID IN (SELECT B.ID FROM TABLE_B B)
或
SELECT * FROM TABLE_A A, TABLE_B B WHERE A.ID = B.ID
什么更好,什么是差别?
SELECT * FROM TABLE_A A WHERE A.ID IN (SELECT B.ID FROM TABLE_B B)
或
SELECT * FROM TABLE_A A, TABLE_B B WHERE A.ID = B.ID
“最佳”方式是使用标准ANSIJOIN
syntax:
SELECT (columns)
FROM TABLE_A a
INNER JOIN TABLE_B b
ON b.ID = a.ID
第一个<代码>WHERE IN版本将often产生相同的执行计划,但在某些平台上,这种计划可能比较缓慢,并非始终一致。 <IN
query(相当于EXISTS
) 随着你开始增加更多的表格或创造更复杂的加入条件,将逐渐变得更加繁琐,因为它不像实际的
第二, com合的yn合物并非一贯支持为JOIN
由于这一安全网而倾向于选择。
我发表了“Aaronatt”的答复,但我有一些评论:
com式加入 s和JOIN
syntax均为ANSI。 第一个是S-89,第二个是SQ-92。 喀克-89 s仍是标准的一部分,以支持落后的兼容性。
您能举出一个支持Kall-92 syntax但不是Q-89的RDBMS的例子吗? 我认为没有任何东西,因为“没有一贯支持”可能不准确。
您也可使用<条码>JOINsyntax, 并生成tes产品。 例: ......来自JOIN B
是有效的(校正:仅在一些品牌实施标准辛醇,如MySQL)。
但无论如何,我同意,在你使用Kall-92 syntax时,更容易发现这一点。 如果你使用Kall-89 syntax,你可使用一个长的<代码>。 WHERE 该条款非常容易使你加入其中之一。
差异在于,第一个层次是分局,在某些数据库中可能较慢。 第二种做法是合并,将两个表格合并为同一问题。
一般来说,如果数据库获得最佳数据,则其速度将加快,因为数据库必须有一个分局,以保持分局的成果。
这两项查询结果不同。 首先,你只从TABLE_A中挑选一栏。
第十组之间至少存在三个差异:
SELECT * FROM TABLE_A A WHERE A.ID IN (SELECT B.ID FROM TABLE_B B)
和Y:
SELECT * FROM TABLE_A A, TABLE_B B WHERE A.ID = B.ID
<>1> 正如Michas所说,如果查询Y将从表A &回到栏目;B,但查询X只从表A中排出。 如果你明确标明你想要背书的栏目,查询X只能包括表A的栏目,但查询Y将包含表B的栏目。
<>2> 浏览次数可能有所不同。 如果表B比表A所示的ID配对比值要多,那么与Kery Y相比,将退还更多的款项。
create table TABLE_A (ID int, st VARCHAR(10))
create table TABLE_B (ID int, st VARCHAR(10))
insert into TABLE_A values (1, A-a )
insert into TABLE_B values (1, B-a )
insert into TABLE_B values (1, B-b )
SELECT * FROM TABLE_A A WHERE A.ID IN (SELECT B.ID FROM TABLE_B B)
ID st
----------- ----------
1 A-a
(1 row(s) affected)
SELECT * FROM TABLE_A A, TABLE_B B WHERE A.ID = B.ID
ID st ID st
----------- ---------- ----------- ----------
1 A-a 1 B-a
1 A-a 1 B-b
(2 row(s) affected)
3) 执行计划可能有所不同,因为询问要求数据库得出不同结果。 <代码>Inner并入,其运行速度超过in
,或exists
, 在某些情况下可能仍然更快。 But,因为结果可能有所不同,因此,需要确保数据支持从<条码>、<>条/代码>或<条码>至<条码>>的转变。
I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...
I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域
We have a restaurant table that has lat-long data for each row. We need to write a query that performs a search to find all restaurants within the provided radius e.g. 1 mile, 5 miles etc. We have ...
What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2
I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...
we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...
I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...
I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...