- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
详细信息:
V
和C
是表格
我希望 C
在 2 个条件下加入 V
(两个 C 分别命名为 C0
和 C1
).由于我必须在同一查询中分别按 C
和 C
的子表的列过滤 V
,因此我认为需要加入。
V
有很多,至少有一个 C
,而 Cx
有时都不存在。
因为 3.,对 C0
和 C1
使用 inner join 有时会导致空结果,但我不想得到 V
'白色区域。
架构:
V (id)
C (id, v_id, name, type)
查询(1):
SELECT V.*
FROM V
INNER JOIN C AS C0 ON V.id = C0.v_id WHERE C0.type = 0
INNER JOIN C AS C1 ON V.id = C1.v_id WHERE C1.type = 1
WHERE C0.name = 'word' or C1.name = 'word'
WHERE C0.name like '%wo%'
查询(2):
SELECT V.*
FROM V
INNER JOIN C AS C0 ON V.id = C0.v_id WHERE C0.type = 0
INNER JOIN C AS C1 ON V.id = C1.v_id WHERE C1.type = 1
WHERE C0.name = 'word' or C1.name = 'word'
WHERE C1.name like '%wo%'
WHERE C0.name = 'word' or C1.name = 'word'
:这个子句每次都存在。
WHERE Cx.name like '%wo%'
:这个子句取决于时间。
最佳答案
嗯...您似乎正在寻找具有相关子查询的 EXISTS
条件:
SELECT * FROM v
WHERE EXISTS (SELECT 1 FROM c WHERE c.c0 = v.c0 OR c.c1 = v.c1)
这将返回表 v
中的所有记录,表 c
中至少有一条记录满足任一条件 c.c0 = v.c0
或条件 c.c1 = v.c1
。
在这种情况下,相关子查询相对于 JOIN
方法的优势在于,当表 c
中存在多个匹配项时,它可以避免记录相乘。
如果您想排除满足任一条件的记录而不是包括它们,则只需将 WHERE EXISTS
更改为 WHERE NOT EXISTS
。
关于mysql - 同一张表在 2 个条件下内联一个表,有时任一条件都为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965458/
使用cats.Semigroup可以这样写: import cats.Semigroup import cats.implicits._ val l1: String Either Int = Lef
所以我的网页中有两个字段,一个用于电话号码,另一个用于电子邮件地址,我需要使用 JavaScript 而不是 jQuery 来填写其中之一。我在这里找到的大多数答案都是针对 jQuery 的,任何使用
我有一个类型,它的形状是这样的: val myType: Future[Either[MyError, TypeA]] = // some value 我知道我可以对此进行模式匹配并获得 Right
我的印象是某处有 Either a 的实例,但我似乎找不到它。我尝试导入 Control.Monad、Control.Monad.Instances 和 Data.Either,如图所示 module
我在一个宠物 Scala 项目中遇到了一个我真的不知道如何克服的情况。 以下示例显示了我的问题。 import scala.concurrent.Future import scala.concurr
我是一名优秀的程序员,十分优秀!