簡體   English   中英

查詢以使用 GROUP_CONCAT 拆分偶數和奇數

[英]Query to split even and odd numbers, with GROUP_CONCAT

我有一個查詢,可以在具有四個數字的特定郵政編碼中查找每條街道的門牌號碼:

SELECT *,
    GROUP_CONCAT(DISTINCT CAST(housenumber AS int) ORDER BY housenumber ASC) AS housenumbers
FROM streets
WHERE postcode LIKE '3031%'
GROUP BY street
ORDER BY lat,lon

這是 groupcatted 門牌號碼的結果。

491,492,493,500,501,502,503,504,505,506,507,508,50

我想將結果分成兩列,分別為evenhousenumber 和oddhousenumbers。 我試過MOD%2 ,但都需要一個WHERE並且不可能在 groupcat 函數中使用WHERE ,我注意到。

如何將結果拆分為偶數和奇數?

您可以使用CASE表達式:

SELECT street
 ,GROUP_CONCAT(DISTINCT CASE WHEN MOD(CAST(housenumber AS int),2) = 0 THEN CAST(housenumber AS int) END ORDER BY housenumber ASC) AS housenumbers_even
 ,GROUP_CONCAT(DISTINCT CASE WHEN MOD(CAST(housenumber AS int),2) = 1 THEN CAST(housenumber AS int) END ORDER BY housenumber ASC) AS housenumbers_odd
FROM streets
WHERE postcode LIKE '3031%'
GROUP BY street
ORDER BY lat,lon;

它起作用是因為GROUP_CONCAT跳過NULL值。


SELECT * ... GROUP BY street也不安全。 相關: mySQL 和 postgreSQL 中的 Group by 子句,為什么 postgreSQL 中出現錯誤?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM