0

ipを共有している行があるかどうかを調べたい。私はこれを使用してこれを行う方法を見つけました

SELECT * FROM peopleWHERE ip IN(SELECT ip FROM peopleGROUP BY ip HAVING COUNT(ip> 1)ORDER BY name

そしてこのデータベースから

ジョン123.456.78.90
ボブ123.456.78.90
エリック123.456.78.90

私は得た

ジョン123.456.78.90
エリック123.456.78.90

しかし、データベースポートのいくつかの変更がIPに追加された後(理由は聞かないでください)
、データベースは次のようになります。

ジョン123.456.78.90:1337
ボブ123.456.78.90:4242
エリック123.456.78.90:9001

これを行うことで、コロンの後のすべてを削除できることがわかりました

SUBSTRING_INDEX(ip、':'、1)

コロンの後のすべてを削除して、
これら2つのクエリを混在させる方法で誰かが同じIPを持っているかどうかを確認する方法がわかりませんか?

4

1 に答える 1

1

グループ化でSUBSTRING_INDEX関数を使用できます。次に例を示します。

SELECT * FROM people 
WHERE SUBSTRING_INDEX(ip, ':', 1) IN ( SELECT SUBSTRING_INDEX(ip, ':', 1) FROM people GROUP BY SUBSTRING_INDEX(ip, ':', 1) HAVING COUNT(ip > 1 ) 
ORDER BY name
于 2013-01-09T18:22:31.983 に答える