अपने अन्य प्रश्नों के साथ @col के असाइनमेंट को यूनियन न करें।
@col को मान निर्दिष्ट करने के लिए एक क्वेरी है, और उस रिकॉर्ड को अपने परिणामों में शामिल करने के लिए एक अलग क्वेरी है।
SELECT @col := col AS col -- Fetch particular record given a value of
FROM tbl -- "col", assigning the identifier to @col.
WHERE col = 'd'
SELECT col -- Now include the above record in the
FROM tbl -- Final result-set
WHERE col = @col
UNION ALL
SELECT col -- Fetch the immediately preceding record,
FROM ( SELECT col -- ordered by "col"
FROM tbl
WHERE col < @col
ORDER BY col DESC
LIMIT 1) preceding
UNION ALL
SELECT col -- Fetch the immediately following record,
FROM ( SELECT col -- ordered by "col"
FROM tbl
WHERE col > @col
ORDER BY col ASC
LIMIT 1) following
ORDER BY col ASC;