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条件下仅选择一个值,则其工作正常。但在消除这种情况后,它并没有像预期的那样工作