0

これらの列を持つテーブルがあります。

id-名前-性別-年齢-国

gender同じ名前を持っているすべての人の名前を、MySQLとPHPの誰かageと一緒に表示したいと思います。country

そのための最良のMySQLクエリは何でしょうか?

4

4 に答える 4

2

これを試して:

SELECT p1.Name
FROM peoplenames p1
INNER JOIN
(
  SELECT Gender, Age, Country
  FROM peoplenames p1
  GROUP BY Gender, Age, Country
  HAVING COUNT(*) > 1
) p2  ON p1.Gender  = p2.Gender
     AND p1.Age     = p2.Age
     AND p1.Country = p2.Country;

これにより、の重複がない名前は無視されGender, Age, Countryます。

これにより、同じ名前が付けられますGender, Age, Country。ただし、この組み合わせGender, Age, Countryが1回だけ発生する場合、それらの名前は無視されます。

SQLフィドルデモ

たとえば、次のサンプルデータがあるとします。

| ID |     NAME | GENDER | AGE | COUNTRY |
------------------------------------------
|  1 |    Ahmed |   Male |  20 |   Egypt |
|  2 | Mohammed |   Male |  20 |   Egypt |
|  3 |      ali |   Male |  20 |   Egypt |
|  4 |     Saly | Female |  25 |  Jordan |
|  5 |     Sara | Female |  25 |  Jordan |
|  6 | Mohammed |   Male |  60 |   Egypt |
|  7 |   Khalid |   Male |  20 |     KSA |

AhmedMohammed(ID 2)でali、同じGender、、AgeおよびCountryMale, 20, Egypt

salyと同じSara。5つの名前のみが選択されます。

|     NAME |
------------
|    Ahmed |
| Mohammed |
|      ali |
|     Saly |
|     Sara |

他の人が:

|  6 | Mohammed |   Male |  60 |   Egypt |
|  7 |   Khalid |   Male |  20 |     KSA |

同じ行が他にないGender, Age, Countryため、無視されます。

于 2013-01-30T10:30:45.613 に答える
2
SELECT
yt.*
FROM yourTable AS yt
JOIN 
(SELECT * FROM yourTable yt2 WHERE id = $id) yt3
ON yt.Gender = yt3.Gender AND yt.Age = yt3.Age AND yt.Country = yt3.Country

ライブで演奏するのを見る

于 2013-01-30T10:30:48.127 に答える
1
SELECT Name 
FROM table_name
WHERE Gender  = (SELECT Gender FROM  table_name WHERE id = $x) AND 
      Age     = (SELECT Age FROM  table_name WHERE id = $x) AND 
      Country = (SELECT Country FROM  table_name WHERE id = $x);

$x特定の人のIDになります。

@fthiellaのコメントによると

SELECT Name 
FROM table_name
WHERE (Gender, Age, Country) = (SELECT Gender, Age, Country FROM table_name WHERE id = $x)
于 2013-01-30T10:24:57.827 に答える
0
select `name` from `tablename` group by `gender`,`age `,`country`;
于 2013-01-30T10:26:23.940 に答える