我需要帮助,在这里调试我的sql查询。让我说,我有如下所示的表结构。需要帮助调试SQL查询
我想在一个排都具有相同的Primary_Id和max(ROW_ID)
对于如合并结果: - 对于以下
表:custom_tab_instance 它仅包含 'primary_id' 和 'INSTANCE_ID'(不小鬼这里)
表:custom_field_value
+---------+-------------+----------+-------+
| Row_Id | Primary_Id | Type | Value |
+=========+=============+==========+=======+
| 4 | 1 | Name | 123 |
+---------+-------------+----------+-------+
| 4 | 1 | Param_1 | 456 |
+---------+-------------+----------+-------+
| 5 | 1 | Name | 456 |
+---------+-------------+----------+-------+
| 5 | 1 | Param_1 | 213 |
+---------+-------------+----------+-------+
| 3 | 2 | Name | 745 |
+---------+-------------+----------+-------+
| 3 | 2 | Param_1 | 012 |
+---------+-------------+----------+-------+
| 4 | 2 | Name | 203 |
+---------+-------------+----------+-------+
预期结果:
+---------+-------------+------+----------+
| Row_Id | Primary_Id | Name | Param_1 |
+=========+=============+======+==========+
| 5 | 1 | 456 | 213 |
+---------+-------------+------+----------+
| 4 | 2 | 203 | NUll |
+---------+-------------+------+----------+
当前结果集:
+---------+-------------+------+----------+
| Row_Id | Primary_Id | Name | Param_1 |
+=========+=============+======+==========+
| 5 | 1 | 456 | 213 |
+---------+-------------+------+----------+
我设法弄到第一排。但是对于Promary_Id = 2,我没有看到任何结果。
我的查询:
select
max_cust.max_row_id as 'Row_Id',
cti.primary_id as 'Primary Id',
name.value as 'Name',
param_1.value as 'Param_1'
from custom_tab_instance cti
inner join (
select max(row_id) as max_row_id, primary_id
from custom_field_value where row_id !=null
group by primary_id
)max_cust
on max_cust.primary_id=cti.primary_id
join custom_field_value name
on name.primary_id =max_cust.primary_id
and max_cust.max_row_id=name.row_id
join custom_field_value param_1
on param_1.primary_id =max_cust.primary_id
and max_cust.max_row_id=param_1.row_id
缺少什么我在这里?我试图做左连接,但它不工作。
注: 我使用Sybase
感谢。
你使用MySQL或Sybase?它们不是同一件事。另外,根据您的示例数据和查询,我不明白您的结果集中没有出现重复行。每个主ID都有多行匹配最大行ID。您的查询应为每个主ID 1和2生成4行。您提供的示例数据不具有代表性,或者您发布的查询不是您尝试运行的查询。 – Rabbit
另外,查询是我们第一次听到关于第二个表的信息。我们对此表一无所知,没有示例数据,没有DDL,甚至没有描述它可能包含的内容。由于我们对此一无所知,因此我们对加入时发生的事情一无所知。也许这就是为什么你没有看到主要的ID 2,也许它不是。我们不知道。如果该另一个表有一个主ID为2的行,那么我期望在该主ID的结果集中有4行。话虽如此,你有一个外连接的正确轨道。但是你没有向我们展示你的外连接,所以我们没有太多的诊断。 – Rabbit
@Rabbit我编辑了更多信息的问题。我也给了你确切的信息。我在这里没有错过任何东西。 – SRJ