如果我需要从表 A 中获取具有表 B 中的匹配标记的行,我将只执行一个简单的 JOIN ON/WHERE B.name=X。但是 MySQL 将只返回来自 A 的行和来自 B 的匹配标签。
如果我想从表 A 中检索在表 B 中具有匹配项的所有内容,并且同时从表 B 中检索所有链接到表 A 中的行,我该怎么办.
A:
a.id
1
2
3
B:
b.id | b.a_id | b.name
1 | 1 | foo
2 | 1 | bar
3 | 1 | derp
4 | 2 | foo
5 | 2 | derp
6 | 3 | bar
A search for "foo" should then return
a.id | b.id | b.a_id | b.name
1 | 1 | 1 | foo
1 | 2 | 1 | bar
1 | 3 | 1 | derp
2 | 4 | 2 | foo
2 | 5 | 2 | derp
感谢我能得到的任何帮助。谢谢!
最佳答案
SELECT a.id, b.id, b.name FROM a
RIGHT JOIN b ON (a.id = b.a_id)
WHERE a.id IN (SELECT b.a_id FROM b WHERE b.name = 'foo')
我想这就是您要找的。可能不是最高效的解决方案,但我希望它能奏效。
编辑:
SELECT a_new.id, b.id, b.name FROM
(SELECT b.a_id FROM b WHERE b.name = 'foo') AS a_new
RIGHT JOIN b ON (a_new.id = b.a_id)
我不认为它会比这更好,基本上你不需要再查询表 a 了;您从 b 中获取与“foo”匹配的所有行,然后将这些行与所有相关项连接起来。
关于jquery - 检索标签兄弟时进行标签搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12548981/