2016-05-05 5 views
1

Ich habe eine Tabelle mit 3 SpaltenSortieren nach den auf der Suche anhand Werte Werte

id | name     | description 
------------------------------------------ 
1 | Service marketing  | Description for the marketing 
2 | Marketing    | Service marketing 
3 | Great customer Service | Helpful shows your customers that you really do care about them. 

Ich mag die Werte suchen, basierend auf ‚Service‘ sowohl von dem Spalte Namen, Beschreibung und auch ich brauche das, um zu bestellen Werte in Asc Reihenfolge nach Name und Beschreibung. Ich erwarte die Ergebnismenge wie folgt.

id | name     | description 
------------------------------------------ 
1 | Service marketing  | Description for the marketing 
3 | Great customer Service | Helpful shows your customers that you really do care about them. 
2 | Marketing    | Service marketing 

Ich habe die unten Abfragen versucht, funktioniert aber nicht

SELECT * FROM search where `name` LIKE '%service%' 
OR `description` LIKE '%service%' 
ORDER BY name,description; 

Ergebnis für obige Abfrage

id | name     | description 
------------------------------------------ 
3 |Great customer Service | Helpful shows your customers that you really do c... 
2 |Marketing    | Service marketing 
1 |Service marketing  | Description for the marketing 

Helfen Sie mir zu diesem Thema. Dank

+0

Sie durch die Position des Wort Service das Ergebnis sortiert werden sollen in den beiden Spalten? – scaisEdge

+0

Was ist das Sortierkriterium? Aus Ihrem Beispiel scheint, dass Sie zuerst nach "Beschreibung" und dann nach "Name" sortieren müssen, aber ich bin mir nicht sicher, ob dies das ist, was Sie wollen – Luci

+0

Ich suche mit dem Wert basierend auf Service mit LIKE. In der Namensspalte ID 1,3 steht der Wert Service, also muss ich zuerst nach der Beschreibung –

Antwort

0

Wenn Sie mit Position 'Service' in den Spalten geordnet werden sollen, sollten Sie diese

select position('Service' IN name) as p1, name, position('Service' IN description) as p2, description 
from my table 
where position('Service' IN name) != 0 
and position('Service' IN description) != 0 
order by p1 desc, p2 desc; 
+0

den Fehler –

+0

bekommen. Bitte zeigen Sie die Fehlermeldung – scaisEdge

+0

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'Name' entspricht als p1, Name, Position ('Service', Beschreibung) als p2, Beschreibung aus 'in Zeile 1 –

0

verwenden Sie so etwas wie

SELECT S.*, 
case 
WHEN position('service', name) = 0 THEN 65535 
ELSE position('service', name) 
END as p1, 
case 
WHEN position('service', description) = 0 THEN 65535 
ELSE position('service', description) 
END as p2 
FROM search as S where 
name LIKE '%service%' OR description LIKE '%service%' 
ORDER BY p1, p2 

verwenden könnte, da Sie ASC benötigen, um

+0

Ich bekomme Fehler wie diese Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax in der Nähe von 'name' zu verwenden = 0 THEN 65535 ELSE-Position ('service', name) END als p1, case WANN posi 'in Zeile 3 –

0

hey Sie können folgende Abfrage verwenden, um Ihr erwartetes Ergebnis zu erhalten

select position('Service' in name) as p1, name,position('Service' in description) as p2,description from dd order by p2,name desc 

Ihr erwartetes Ergebnis

id | name     | description 
------------------------------------------ 
1 | Service marketing  | Description for the marketing 
3 | Great customer Service | Helpful shows your customers that you really do care about them. 
2 | Marketing    | Service marketing 
Verwandte Themen