2016-09-14 8 views
0

次のデータを持つcarDetailというテーブルがあります。SQL SELECT最後の車の前に "and"を追加するクエリ

Table

私はちょうどフォーマットを以下に "Jignesh" よりも多くの車を持つレコードをしたい、

"のGauravはアウディ、BMW、ホンダ、トヨタ車を持っている"
SELECT concat(`Name`, ' has ', GROUP_CONCAT(car SEPARATOR ', '),' Cars') as 
    result 
from cardetail 
where `Name` IN (SELECT `Name` FROM `cardetail` 
       GROUP BY `Name` 
       HAVING COUNT(`Car`) > (select count(`Car`) 
             from cardetail 
             where `Name` = 'Jignesh')) 
GROUP BY `Name` 

とこのような結果が得られました。

Result

私は誰もが解決策を知っている場合は、私を助けてください「」最後の車の前に、このような何か、

Gaurav has Audi, BMW, Honda and Toyota Cars 

たい。

ありがとうございました。

SET @var := (SELECT concat(`Name`, ' has ', GROUP_CONCAT(car SEPARATOR ' ,'),' Cars') as 
     result from cardetail where `Name` IN (SELECT `Name` FROM `cardetail` GROUP BY 
     `Name` HAVING COUNT(`Car`) > (select count(`Car`) from cardetail where 
     `Name` = 'Jignesh')) GROUP BY `Name`); 

    SELECT REPLACE(@var,SUBSTRING_INDEX(@var, ' ', -2),REPLACE(SUBSTRING_INDEX(@var, ' ', -2),',',' and ')) as result 
+1

これはアプリケーションでより簡単に行うことができますalyer – e4c5

+1

何らかのプログラミング言語でこれを達成しようとしないのはなぜですか?それは非常に簡単になります! –

+0

何らかの形でコンマの最後の出現箇所を –

答えて

3

はこれを試してみてください。しかしそれはうまくいくかもしれません。

私はちょうどそれをテストするので、それを試してみることができません。

SELECT concat(LEFT(result, (LENGTH(result) - LOCATE(',', REVERSE(result)))), ' and ', (RIGHT(result, (LENGTH(result) - LOCATE(',', REVERSE(result))+1)))) 
FROM 
(

    SELECT concat(`Name`, ' has ', GROUP_CONCAT(car SEPARATOR ', '),' Cars') as result 
    from cardetail 
    where `Name` IN (SELECT `Name` FROM `cardetail` 
        GROUP BY `Name` 
        HAVING COUNT(`Car`) > (select count(`Car`) 
              from cardetail 
              where `Name` = 'Jignesh')) 
    GROUP BY `Name` 
) 

考え方は次のとおりです。 文字列の最後に現れる位置を見つけることができるようになるのMySQLにはInstrRev機能はありません別の文字列で、私たちはこのようにそれを模倣することができます:あなたは、その位置からその位置とRIGHT()LEFT()を作ることができます

(LENGTH(result) - LOCATE(',', REVERSE(result))+1) 

。中に" and "を追加してください

+0

こんにちはJignesh M. Mehta.私はあなたのクエリを使用し、あなたのクエリが完璧な場合、それは正常に動作するvariable.ifを追加しました。 –

+0

多くの方々あなたの最高のお返事ありがとうございます。それはまだうまくいっていますが、まだ小さな問題が発生しています.GauravにはAudi、BMW、Honda、Toyota Carsのような結果があります。それを取り除くことはできますか?だから私はあなたの最善の答えを考えます。 :) –

+1

今すぐ試してみてください。あなたの望む結果を与えています –

0

これは恐ろしいソリューションであり、私は絶対にそれを嫌う:

+0

あなたの答えには多くの感謝。それはエラーを投げます。派生テーブルはすべて、独自のエイリアスを持つ必要があります。あなたは私に最高の答えをチェックしてください。 –

+0

あなたの返信は大変ありがとうございます。ありがとう.. –

関連する問題