私はフィールド名を持つ行を含むMySQL内のテーブルを持っています。今度は、同じユーザー名を持ち、異なるケーシングを持つ行を選択したいと思います。たとえば、kMaltaとKmaltaです。フィールド内で同じケーシング内にある同じデータを持つ行を選択します。
SELECT文を使ってどうすればいいですか?
私はフィールド名を持つ行を含むMySQL内のテーブルを持っています。今度は、同じユーザー名を持ち、異なるケーシングを持つ行を選択したいと思います。たとえば、kMaltaとKmaltaです。フィールド内で同じケーシング内にある同じデータを持つ行を選択します。
SELECT文を使ってどうすればいいですか?
あなたは、特定のユーザ名キャッチしたい場合:
SELECT u1.* FROM users u1, users u2 WHERE UPCASE(u1.username) = UPCASE(u2.username) AND u1.id != u2.id
これを試してみてください:
SELECT a.username
FROM tab a
JOIN tab b
ON LOWER(a.username) = LOWER(b.username)
GROUP BY a.username
HAVING COUNT(a.username) > 1
あなたが重複してすべての行をキャッチしたい場合は
SELECT * FROM users WHERE UPCASE(username) = 'KMALTA'
を
お試しください:
SELECT *
FROM users
WHERE LOWER(username) IN (
SELECT LOWER(username)
FROM users
GROUP BY LOWER(username)
HAVING COUNT(id) > 1
)
ありがとうございますが、私はそれを一般的にしたいと思いますが、KMaltaをキャプチャしません。 –
どのようなexeclyあなたは、別のケースですでに存在するユーザー名を持つすべての行をキャッチしたいですか? – socha23