在 MySQL 中:
如果我们有两个表:
comments
key | value
=================
1 | foo
2 | bar
3 | foobar
4 | barfoo
和:
meta
comment_key | value
=========================
1 | 1
2 | 1
3 | 2
4 | 1
我想从 comment
获得评论具有相应 comment_key
的表在 meta
具有特定 value
的表(value
表中的 meta
列)。
例如,我想从 comment
中选择所有行具有 value
的表的 1
在 meta
表:
我希望得到这些结果:
key | value
=================
1 | foo
2 | bar
4 | barfoo
如果我要从 comment
中选择所有行具有 value
的表的 2
在 meta
表:
我希望得到这样的结果:
key | value
=================
3 | foobar
真的希望有人能帮忙,提前谢谢大家!
我想我需要加入吗?任何指针都会很棒,如果可能的话,一个简短的解释,这样我就可以找出我哪里出错了 -> 下次我会知道的!
最佳答案
我实际上不建议为此使用 JOIN — 或者更确切地说,我建议使用“semijoin”,这是一个不直接用 SQL 表达的关系代数概念。半联接本质上是一种联接,您只想从一个表中检索记录,但条件是它们在不同的表中具有相应的记录。
在 SQL 表示法中,这个概念是通过使用 an IN
clause 间接表达的。 , 带有 subquery :
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(MySQL 实际上最终会在内部将其转换回半连接——本质上是一种退化的内连接——但 IN
子句是在原始 SQL 中表达它的自然方式。)
关于mysql - 从表中选择行,其中具有相同 ID 的另一个表中的行在另一列中具有特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105427/