Mysql

MySQL 錯誤 ‘with base as’ 子查詢和 GROUP BY

  • June 29, 2022

我不知道公司為什麼使用這麼舊的 MySQL 版本,但它是:5.6。

我們有一些重複的子域。例如,給定一個子域,fastelvis我們得到 6 個結果,但應該只有一個,即 ID 為 6 最低的那個。此查詢正常工作,並向我顯示了重複的子域:

select subdomain, ID 
from clients where subdomain in 
   (select subdomain 
   from clients 
   group by subdomain 
   having count(*) > 1 ) 
order by subdomain, FSID ;

這很好用。

ID 是一個整數欄位,自動遞增。

但我需要找到任何一組重複項的最低 ID。也就是說,如果fastelvisID 為 11、27、94、149、2398 和 9322,那麼我只需找到11.

我認為這會讓我得到我想要的:

With base as (
select subdomain,
      ID
from clients
where subdomain in 
   (select subdomain 
   from clients 
   group by subdomain 
   having count(*) > 1 )
order by subdomain, ID)
SELECT subdomain,
      MIN(ID) first_subdomain_ID
FROM base
GROUP BY subdomain

我一直在看這個 20 分鐘,我沒有看到任何語法錯誤,但我得到:

You have an error in your SQL syntax; 
check the manual that corresponds to your
MySQL server version for the right syntax 
to use near 'base as ( select subdomain,

我想知道,也許這種語法在這個版本的 MySQL 中不起作用?

有人看到語法錯誤嗎?

select subdomain,
      MIN(id) AS min_id
   from clients 
   group by subdomain 
   having count(*) > 1

引用自:https://dba.stackexchange.com/questions/313875