相关疑难解决方法(0)

为什么我们在LEFT JOIN中有OUTER子句?

下面两个查询之间有什么区别

UPDATE

这个问题已在类似的问题中得到解答,这里有LEFT JOIN和LEFT OUTER JOIN在SQL Server中.

SELECT * FROM ca 
LEFT JOIN exam 
ON ca.subject = exam.subject
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM ca 
LEFT OUTER JOIN exam 
ON ca.subject = exam.subject
Run Code Online (Sandbox Code Playgroud)

Table 'CA'
--------------------
subject|score
----------------
ENG    |25
MTH    |34
BIO    |18


Table 'Exam'
--------------------
subject|score
----------------
ENG    |25
Run Code Online (Sandbox Code Playgroud)

运行2个查询会在mysql,sqlserver 2008中产生相同的结果.我没有在Oracle中测试.

subject | score1 | subject | score1
--------------------------------------
ENG       14       ENG       44
MTH       28       NULL      NULL
BIO       22       NULL      NULL
Run Code Online (Sandbox Code Playgroud)

OUTER子句的目的是什么?

mysql sql sql-server join

2
推荐指数
1
解决办法
1319
查看次数

Oracle从两个表中选择数据,如果一个为空,则返回null

我在oracle数据库中有两个表(fruit_cost和fruit_availability),详情如下:

fruit_cost如下所示:

fruit_name | fruit_cost
apple | 30
橙色| 7
瓜| 14

fruit_availability看起来像这样:

fruit_name | fruit_availability
表是空

的有任何好的选项来获得这样的结果:

fruit_name | fruit_cost | fruit_availability
apple | 30 | null
orange | 7 | null
瓜| 14 | 空值

oracle select join

2
推荐指数
1
解决办法
1万
查看次数

LEFT JOIN后列中为TRUE为FALSE

假设我有表A和表B.A
有5列:F,G,H,I和X.B
有1列:X.A
和B中的X具有相同类型的值.
说我跑下面.

SELECT *
FROM A
LEFT JOIN B
ON A.X = B.X

结果数据集有6列.但是,有时由于LEFT JOIN,表B中行的数据为NULL. 我的最终目标是能够从A返回*但是在结果集中有一个额外的(第六)列,如果连接确实找到匹配则显示"是",如果没有,则显示"否".

任何帮助将不胜感激!

谢谢,

马特

sql-server null left-join

1
推荐指数
1
解决办法
3946
查看次数

SQL 其中 ID 等于 ID 但可以为空

我正在尝试从数据库中获取一些数据。我Taak有一个可能的idPartij列的表。可能,因为它可以是真实的idPartij,但也可以是null

我得到的查询:

SELECT T.idTaak,
       T.Taaktype,
       P.Partijnaam,
       T.Naar,
       T.UltimatumDatum,
       T.Opmerking,
       T.Status,
       T.Prioriteit
FROM Taak AS T,
     Partij AS P
WHERE T.idPartij = P.idPartij
ORDER BY idTaak DESC
Run Code Online (Sandbox Code Playgroud)

当我有一个 id 时T.idPartij,这工作正常,但如前所述,该 id 可以是null. 在这种情况下,该行将不会出现在结果中。

唯一的问题:当我删除 where 子句时,我得到了很多行(因为Partij表不再被过滤......

我对 SQL 完全是个菜鸟,所以我想不出“解决”这个问题的方法。我唯一能想到的是创建 2 个查询,但我认为这不是一个好方法...

sql where

1
推荐指数
1
解决办法
3762
查看次数

使用WHERE子句时,SQL JOIN不显示NULL结果

服务器: SQL Server 2008 R2
SQL小提琴: http ://sqlfiddle.com/#!6/112a6/4/0

我为可怜的主题/标题道歉,但我很难说出如何陈述我的问题,所以我将用一个(可能)冗长的例子来画出来:

下面是一个相当简单的查询,它可以获取特定日期范围内PC的会话数.请注意,WHERE子句已被注释掉.我希望收到的是PC的完整列表,即使是在该范围内具有ZERO/NULL会话的PC.但是,当我添加WHERE子句时,我只能获得在该范围内有会话的PC.这是有问题的,因为我无法看到在此期间未使用的PC.

SELECT 
    f_assetnetbiosname, 
    COUNT(f_sessiondate) as 'Sessions'
FROM 
    tb_assets ass
LEFT JOIN 
    tb_sessions ses
  ON 
    ses.f_sessionnetbiosname = ass.f_assetnetbiosname  
--WHERE (f_sessiondate BETWEEN '04/01/2015' AND '04/30/2015')
GROUP BY f_assetnetbiosname

========================   =======================================|
| tb_assets            |   | tb_sessions                          |
========================   =======================================|
|   f_assetnetbiosname |   |  f_sessionnetbiosname  f_sessiondate |
------------------------   ---------------------------------------|
|     COMP_001         |   |    COMP_002            03/29/2015    |
|     COMP_002         |   |    COMP_002            03/30/2015    |
|     COMP_003         |   |    COMP_001            03/30/2015    |
------------------------   |    COMP_001            04/02/2015 …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008

1
推荐指数
1
解决办法
51
查看次数

SQL Server在视图查询中将LEFT JOIN替换为LEFT OUTER JOIN

我需要在视图中使用LEFT JOIN,但是每次保存视图时,SQL Server都会将LEFT JOIN替换为LEFT OUTER JOIN。

尝试显式使用LEFT INNER JOIN时,出现错误“单词'INNER'附近的语法不正确”。此外,当我想为视图创建索引时,出现错误“无法使用OUTER JOINS向视图添加聚簇索引”。

这太疯狂了,为什么会发生这种想法?

在此处输入图片说明

因此,当我尝试为视图创建索引时,得到的消息是我使用了外部联接,尽管我没有。

在此处输入图片说明

t-sql sql-server views

1
推荐指数
1
解决办法
7279
查看次数

强制返回左连接的空值

我有三个具有以下结构的表

CUSTOMER
OwnerID    | ProfileID (PK)| Name    | Surname    | Address
Owner1       Profile1       John      Brown        some address
Owner1       Profile2       John      Brown        some address
Owner1       Profile3       John      Brown        some address
Owner2       Profile4       Charles   Snow         some address
Owner2       Profile5       Charles   Snow         some address
Owner2       Profile6       Charles   Snow         some address
Owner3       Profile7       Edward    Glork        some address
Owner3       Profile8       Edward    Glork        some address

LOANS
LoanID (PK)| ProfileID    | Amount    | Duration
Loan1       Profile1       5000        31
Loan2       Profile2       1000        31
Loan3       Profile4       4000        31
Loan4 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

1
推荐指数
1
解决办法
39
查看次数

仅选择/计数已验证且未禁止的用户

这是代码

SELECT username,count(username) FROM users WHERE status = '1' // $vuser to get the verified user only (it's the main query)

SELECT username FROM banned_users WHERE username = $vuser  // if yes $bad_user is true else false
Run Code Online (Sandbox Code Playgroud)

是否可以使用一个 sql 查询仅选择/计算在banned_users中不存在的已验证用户?

有什么想法吗?

php sql count

0
推荐指数
1
解决办法
142
查看次数

标签 统计

sql-server ×5

sql ×4

join ×2

count ×1

left-join ×1

mysql ×1

null ×1

oracle ×1

php ×1

select ×1

sql-server-2008 ×1

t-sql ×1

views ×1

where ×1