所以我有一个存储了关联到彼此像这样的标签负载的MySQL表:MYSQL选择标签相关的ID从同一个表
id level upper_tag value
----------------------------------------------
1 0 0 Electric
2 0 0 Home
3 1 2 Gas Cooker
4 1 1 wire
5 2 4 superconductor_wire
6 0 0 Sexy stuff
7 2 3 cleaner
8 0 0 Sport
9 1 8 trainers
10 1 8 rugby
11 2 10 Nike
基本上我需要找到相关的变量,所以如果我通话运动我想要的标签:运动,教练,橄榄球和耐克返回。如果我选择标签橄榄球,我会回橄榄球和耐克。
我有一个想法,我不知道如果我在正确的路线,因为我是一个MYSQL noob。这里是我的尝试,但它并没有给我正确的答案:
SELECT * FROM tag t
WHERE t.`id` = (SELECT `upper_tag` FROM tag) AND t.`id` = 8
;
'SELECT upper_tag FROM tag'会给你一堆ID,你不能这样比较。你必须仅在ID上进行比较。 –
您需要一个相当复杂的解决方案。没有额外的代码,你就不能遍历多层次的关系。这里有一个解决方案虽然:http://stackoverflow.com/questions/19091457/get-all-children-by-parent-in-mysql-query – AgRizzo
我想这会比做迷你查询的负载更好 – bubblebath