Jon*_*tes 13 mysql sql select join
在MySQL中:
如果我们有两个表:
comments
key | value
=================
1 | foo
2 | bar
3 | foobar
4 | barfoo
Run Code Online (Sandbox Code Playgroud)
和:
meta
comment_key | value
=========================
1 | 1
2 | 1
3 | 2
4 | 1
Run Code Online (Sandbox Code Playgroud)
我想从comment
表comment_key
中获得meta
表中具有特定value
(表中的value
列meta
)对应的注释.
例如,我想选择所有从该行comment
有一个表value
中1
的meta
表:
我期待这些结果:
key | value
=================
1 | foo
2 | bar
4 | barfoo
Run Code Online (Sandbox Code Playgroud)
而如果我选择所有从该行comment
有一个表value
中2
的meta
表:
我期待这个结果:
key | value
=================
3 | foobar
Run Code Online (Sandbox Code Playgroud)
我真的希望有人可以提供帮助,谢谢你们提前!
我想我需要加入吗?任何指针都会很棒,如果可能的话,还有一个简短的解释,这样我就可以解决我出错的地方 - >所以下次我会知道!
rua*_*akh 22
我实际上不会为此推荐JOIN - 或者更确切地说,我推荐一个" semijoin ",这是一个不直接用SQL表达的关系代数概念.半连接本质上是一个连接,您只想从一个表中检索记录,但条件是它们在不同的表中具有相应的记录.
在SQL符号,这个概念间接表达,通过使用一个IN
子句,具有子查询:
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
Run Code Online (Sandbox Code Playgroud)
(MySQL实际上最终会在内部将其转换为半连接 - 实质上是一种退化的内连接 - 但该IN
子句是在原始SQL中表达它的自然方式.)