doris 执行SELECT distinct * FROM element where tree_code regexp (select group_concat(tree_code,'|') from element where id in( 884809067,1475547732)) and dimension_id = 210325914 数据没变的情况下多次执行返回的数据条数不一致
时间: 2024-04-04 20:29:46 浏览: 15
这种情况很可能是由于数据库中的数据发生了变化导致的。一些可能导致数据变化的原因包括其他用户修改了同一行数据、数据库服务器发生故障或者数据源本身已经发生了变化。您可以尝试在执行该查询之前执行一次数据库备份,并在查询返回结果不一致时比较备份和当前数据库的差异以确定数据变化的原因。此外,您还可以查看数据库日志以了解其他用户或进程的活动情况,看是否有对该表进行修改的记录。
相关问题
doris 执行 SELECT distinct a.* FROM element a INNER JOIN ( SELECT dimension_id ,tree_code FROM element) b ON b.dimension_id = a.dimension_id where a.tree_code regexp (select group_concat(concat('^',tree_code),'|') from element where id in( 884809067,1475547732)) and a.dimension_id = 210325914
这个SQL查询语句使用了Doris的SELECT DISTINCT语法来查询element表中满足条件的记录,并且使用了内连接和子查询。
具体来说,这个查询语句会先执行子查询,使用group_concat函数将指定记录的tree_code按照'|'连接起来,并在每个tree_code前面添加'^'字符,从而形成一个正则表达式。然后,主查询语句会使用这个正则表达式来匹配满足条件的tree_code,找到对应的element记录,并返回去重后的结果。
需要注意的是,这个查询语句中使用了INNER JOIN语法和子查询,可能会对性能造成影响,如果element表数据量较大,建议使用合适的索引来优化查询性能。
with temp as (select * from doris_fdbfault_QBMonitor_OA where vin in (select distinct vin from vin_packID_pairing_v2 where substr(packID,6,3)='VB6')), result_detail as (select day,vin,Flag_RositivetoGroundISOR,Counts_RositivetoGroundISOR,ST_RositivetoGroundISOR,ET_RositivetoGroundISOR, Flag_NegativetoGroundISOR,Counts_NegativetoGroundISOR,ST_NegativetoGroundISOR,ET_NegativetoGroundISOR from temp t1 where day>='2023-07-01' and vin not in (select distinct vin from temp t1 where t1.day<t1.day)) select count(*) from result_detail where day='2023-07-01' 帮忙修改下这段代码
根据你提供的代码,我看到了一个问题,就是在子查询中使用了相同的表别名 `t1`。为了修复这个问题,你可以更改其中一个子查询的表别名。
以下是修改后的代码:
```sql
WITH temp AS (
SELECT *
FROM doris_fdbfault_QBMonitor_OA
WHERE vin IN (
SELECT DISTINCT vin
FROM vin_packID_pairing_v2
WHERE SUBSTR(packID, 6, 3) = 'VB6'
)
),
result_detail AS (
SELECT day, vin, Flag_RositivetoGroundISOR, Counts_RositivetoGroundISOR, ST_RositivetoGroundISOR, ET_RositivetoGroundISOR,
Flag_NegativetoGroundISOR, Counts_NegativetoGroundISOR, ST_NegativetoGroundISOR, ET_NegativetoGroundISOR
FROM temp t1
WHERE day >= '2023-07-01' AND vin NOT IN (
SELECT DISTINCT vin
FROM temp t2
WHERE t2.day < t1.day
)
)
SELECT COUNT(*)
FROM result_detail
WHERE day = '2023-07-01';
```
我将第一个子查询中的表别名从 `t1` 修改为了 `t2`,以便与外部查询的别名区分开来。
请注意,这只是根据你提供的代码进行的修改,如果还有其他问题,请提供更多详细信息,我将尽力帮助你。