MySQL-左连接显示的行数超出预期

MySQL-左连接显示的行数超出预期,mysql,left-join,mysql-num-rows,Mysql,Left Join,Mysql Num Rows,我要选两个。第一个检索: t1 id value 1 149 2 149 3 149 4 149 第二条: t2 id value 149 2 149 13 149 145 149 149 我在t1.value=t2.id上加入t1/t2。但结果如下: 1 149 2 1 149 13 1 149 145 1 149 149 2 149 2 2 149 13 2 149 145 2 149 149 3 149 2 3 149 13

我要选两个。第一个检索:

t1
id  value
1   149
2   149
3   149
4   149
第二条:

t2 
id  value
149 2
149 13
149 145
149 149
我在t1.value=t2.id上加入t1/t2。但结果如下:

1   149 2
1   149 13
1   149 145
1   149 149
2   149 2
2   149 13
2   149 145
2   149 149
3   149 2
3   149 13
3   149 145
3   149 149
4   149 2
4   149 13
4   149 145
4   149 149
当所需结果应如下所示时:

1   149   2
2   149   13
3   149   145
4   149   149
我认为出现问题是因为这是SELECT而不是表。在谷歌搜索了很多之后,我找不到任何解决方案

编辑:MySQL查询:

SELECT t1.id_sequence,t2.id_category, t2.tree
FROM
(
    SELECT * FROM (SELECT 1 AS id_sequence UNION SELECT 2 AS id_sequence UNION SELECT 3 AS id_sequence UNION SELECT 4 AS id_sequence ) as tbl1
    CROSS JOIN (SELECT DISTINCT id_catalog_category AS 'id_category' from catalog_category where id_catalog_category = 149) as tbl2
) as t1
LEFT JOIN 
(
    SELECT child.id_catalog_category AS id_category, ancestor.id_catalog_category AS tree
    FROM catalog_category AS child
    JOIN catalog_category AS ancestor
    ON (child.lft BETWEEN ancestor.lft AND ancestor.rgt)
    WHERE child.id_catalog_category = 149 AND ancestor.id_catalog_category != 1 
) as t2
ON t1.id_category = t2.id_category 

分别选择检索到的表1和表2。

Mysql基于值连接行,这与仅基于值连接不同

在您的数据集中,应该返回4*4行,这正是您得到的,因此您的查询没有问题。你的期望是错误的

例如:

t1第一行:1149 您可以看到您的联接匹配t2的所有行,因此返回了4行。t1的所有后续行都是相同的,总共返回16行

编辑:选中此选项:

SELECT @rownum:=@rownum+1 as `id`, t2.* 
FROM (
    SELECT child.id_catalog_category AS id_category, ancestor.id_catalog_category AS tree
    FROM catalog_category AS child
    JOIN catalog_category AS ancestor
    ON (child.lft BETWEEN ancestor.lft AND ancestor.rgt)
    WHERE child.id_catalog_category = 149 AND ancestor.id_catalog_category != 1 
) as t2

我认为你目前的结果是正确的。 例如,, 假设t1中的id唯一地标识一个人&value是他正在购物的沃尔玛商店。 假设t2中的id是沃尔玛商店,value是每个沃尔玛商店中所有东西的项目编号列表

因此,每个人都可以从沃尔玛149店买到任何东西。
结论-您真正想做什么?

请发布您的查询和表结构您完全正确@Sebas。愚蠢的错误。好吧,我的问题还在继续?我怎样才能得到想要的桌子?我不确定你对桌子的使用情况。您想修改结构还是更改查询以实际获得所需的结果?我从第一次选择构建了一个索引序列,然后是产品ID,最后是一些产品值。我想要一个查询,以获得关于该问题的最终表格。正如您所说,我的查询正在执行1-*查询,我需要的是1-1结果这里有一个误解问题。您的第一个查询只是将序列添加到category表中。让我提个建议。编辑:现在就知道了@Sebas,我一分钟前也在尝试同样的方法,这时出现了第二期。树列可能有3或4个值,具体取决于id\u catalog\u类别值。所以,每次我需要这个值来重新启动id\u catalog\u category,我需要这个值来转换结果矩阵。如果在WHERE条件下仅选择一个值,则其工作正常。但在消除这种情况后,它并没有像预期的那样工作