mysql - 从一个表中选择其列与另一个表中的 id 或该 id 的子级相匹配的表,并将重复项限制为 10 个

标签 mysql sql hierarchical-data

我有两个表,分别命名为区域和数据。

regions
<Id>, <Name>, <ParentId>
1      a          0
2      b          0
3      c          1

data
<Id>, <Url>, <RegionId>
1     "..."     3
2     "..."     2
3     "..."     1
4     "..."     1

使用 WHERE Regions.ParentId=0 条件时的异常结果

<data.Id>, <CatId>, <data.Url>
     3        1        ""
     4        1        ""
     2        2        ""
     1        1        ""  

我想要获取 data.RegionId 与regions.Id 匹配或与regions.Id 和...的子项匹配的数据记录。然后创建名为 CatId 的新列,该列应该是具有子 ParentId=0 的regions.Id。 我需要为每个 CatId 设置项目限制。例如10

最佳答案

回答了你问题的一半,返回匹配regionid或parent id的数据记录

select d.id , r.id as catid ,d.url 
from data d join regions r  on r.id = d.regionId 
union
select d.id , r.id  as catid ,d.url 
from data d join regions r  on r.parentid = d.regionId 

现在告诉我你真正喜欢得到什么,以便我们给出正确的答案

关于mysql - 从一个表中选择其列与另一个表中的 id 或该 id 的子级相匹配的表,并将重复项限制为 10 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38471213/

相关文章:

mysql - SQL 特定语句查询

php - 一条sql语句比两条sql语句好吗?

php - 对具有可接受的 NULL 值的多个表执行 JOIN

sql - 在关系数据库中存储分层数据有哪些选项?

mysql查询获取根父级

php - 匹配表单中的多个列

mysql - 仅当第二个条件为真时才进行重复 key 更新

sql - 根据索引范围将一列变成多列

sql - DB2 SQL 如何使用 GET DIAGNOSTICS 获取最后执行的 SQL 语句?

mysql - 从表中查找所有最后一个 child