Jika saya mengatakan:
select max(length(Name))
from my_table
Saya mendapatkan hasil sebagai 18, tetapi saya ingin data terkait juga. Jadi jika saya katakan:
select max(length(Name)),
Name
from my_table
...tidak bekerja. Seharusnya ada self join yang kurasa tidak bisa kupahami.
Adakah yang bisa memberi saya petunjuk?
Jawaban:
SELECT name, LENGTH(name) AS mlen FROM mytable ORDER BY mlen DESC LIMIT 1
sumber
Diedit, akan berfungsi untuk nilai maks () yang tidak diketahui:
select name, length( name ) from my_table where length( name ) = ( select max( length( name ) ) from my_table );
sumber
name
yang memiliki panjang maksimum 18select max(length(Name)) as num1,Name from my_table group by Name having num1 = 18
, karena saya tahu dari kueri pertama bahwa maks 18. Tetapi bagaimana cara menggabungkan ini menjadi satu kueri?Ok, saya tidak yakin apa yang Anda gunakan (MySQL, SLQ Server, Oracle, MS Access ..) Tetapi Anda dapat mencoba kode di bawah ini. Ini bekerja di contoh W3School DB. Ini coba ini:
SELECT city, max(length(city)) FROM Customers;
sumber
Menggunakan:
SELECT mt.name FROM MY_TABLE mt GROUP BY mt.name HAVING MAX(LENGTH(mt.name)) = 18
... dengan asumsi Anda tahu panjangnya sebelumnya. Jika tidak, gunakan:
SELECT mt.name FROM MY_TABLE mt JOIN (SELECT MAX(LENGTH(x.name) AS max_length FROM MY_TABLE x) y ON y.max_length = LENGTH(mt.name)
sumber
Select URColumnName From URTableName Where length(URColumnName ) IN (Select max(length(URColumnName)) From URTableName);
Ini akan memberi Anda catatan di kolom tertentu yang memiliki panjang maksimum.
sumber
Jika Anda membutuhkan maks dan min dari tabel yang sama:
select * from ( (select city, length(city) as maxlen from station order by maxlen desc limit 1) union (select city, length(city) as minlen from station order by minlen,city limit 1))a;
sumber
select * from my_table where length( Name ) = ( select max( length( Name ) ) from my_table limit 1 );
Ini melibatkan dua pemindaian tabel, jadi mungkin tidak terlalu cepat!
sumber
Gunakan CHAR_LENGTH () alih-alih LENGTH () seperti yang disarankan dalam: MySQL - length () vs char_length ()
SELECT name, CHAR_LENGTH (name) AS mlen FROM mytable ORDER BY mlen DESC LIMIT 1
sumber
Saya kira Anda bisa menggunakan solusi seperti ini:
select name, length(name) from users where id = ( select id from users order by length(name) desc limit 1 );
Mungkin bukan solusi optimal, meskipun ... Tapi sepertinya berhasil.
sumber