- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 mySQL 数据库中有几个表。为了简单起见,我将只显示一些基本字段:
表:来源:
sourceID int not null unique primary key
trigger int not null
<other stuff>
表:sourceBS
id not null unique primary key
sourceID int not null,
name varchar(20),
sourceBS 表中的
SourceID
是一个外键,使用级联选项引用源中的同名元素。我已经测试过这一点:如果我删除sources中的条目,sourceBS中相应的条目也会消失。很好。
我想从 sources 和 sourceBS 的联接中选择一些内容,并根据“sources”属性进行过滤。这应该很容易,通过连接,我认为外键应该表现得非常有效,所以:
SELECT sources.sourceID, sourceBS.*
FROM sources
LEFT JOIN sourceBS ON sources.sourceID = sourceBS.sourceID
WHERE trigger=1;
但是当运行时,每行对于从 sourceBS 返回的值都有“NULL
”,即使 sourceBS 包含与条件匹配的条目。我可以验证这一点:
SELECT *
FROM sourceBS
WHERE sourceID IN (
SELECT sourceID
FROM sources
WHERE trigger=1
);
这里我得到了一组正确的结果,即非空值。但是,虽然这可以作为概念证明,但在现实生活中并没有什么好处,因为我也想从“源”表中返回一堆内容,并且我不想为了运行多个查询而运行多个查询。得到我想要的。
回到连接,如果我用内连接替换左连接,则不会返回任何结果。就好像,不知何故,“连接”只是在 sourceBS 表中找不到任何匹配项,但正如第二个查询所示,它们仍然存在。
为什么会发生这种情况?我知道这个连接有 1:M 关系,sourceBS 可以有源中给定条目的多个条目,但这应该没问题。我可以在其他数据库上测试这种类型的联接,并且它有效。
最佳答案
好的,所以我已经解决了这个问题 - 最终这不是事务问题:当我在原来的机器上尝试时,它再次失败。这是加入的顺序。看来在我的终端中我有“ON”子句,与上面相反,也就是说,我正在做:
... LEFT JOIN sourceBS ON (sourceBS.blockSourceID=sources.sourceID)
返回所有空值。如果我这样做(如我粘贴的上面的代码)
... LEFT JOIN sourceBS ON (sources.sourceID=sourceBS.sourceID
它有效。当我昨晚在新机器上第二次尝试时,我使用了第二种配方。
我想我最好阅读一下连接以了解为什么会发生这种情况!
关于mySQL:连接找不到数据,即使它们存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32076676/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!