MySql:如何仅为多个名称显示1个名称

时间:2015-06-04 06:46:25

标签: mysql

为了更清楚,如果我在MySql中有这些数据:

name | allowance | age
----------------------
khan | 50        | 20
aal  | 60        | 22
hyme | 50        | 21
khan | 61        | 20

请注意,数据库中有两个“ khan ”具有不同的限额。我只想显示名称和年龄但是如果我使用mysqli select语句显示它,那么会有两个' khan '但我只想显示1' khan ”。我该怎么办?

5 个答案:

答案 0 :(得分:1)

您需要使用GROUP_CONCAT查看所有可汗的消息;

select name, GROUP_CONCAT(age) ages from Table group by name

或最小年龄汗

 select name , min(age) MiniumAge from Table group by name

或为年长的汗

 select name , max(age) MaxAge from Table group by name

或任何汗

select name , age from Table group by name

答案 1 :(得分:0)

请尝试以下查询: -

SELECT name, age FROM table_name WHERE group by name

如果你想要多个相同的记录,那么只需逐个查询。

答案 2 :(得分:0)

我认为你可以这样做:

SELECT name, age FROM table_name WHERE group by name,age

答案 3 :(得分:0)

第一件事:如果这两个" khan" s是同一个人有两个不同的配额,那么你的架构没有正确规范化,以后会给你带来很大的麻烦 - 想象你想改变&#34 ;汗"到"汗" - 现在你必须在多个地方更新一次。根据您的实际需要,您可能需要一个人员表(person_id,姓名,年龄)和津贴表(person_id,allowance,[.. some some parameters?..])。

其次,要真正得到你想要的东西,要么你使用group by,要么得到一个"随机"如其他答案中所建议的每个名称的行,或者您可以

SELECT DISTINCT name, age FROM table;

每个名字 - 年龄组合会给你一行,所以khan-20只会在那里一次 - 但如果有khan-25则那可能是不同的人你会有两个khans返回,每个都有他们的自己的年龄。

答案 4 :(得分:0)

你可以尝试这个伴侣:

SELECT DISTINCT
    name, age
FROM
    <your_table>;  

或者这个

SELECT
    name, age
FROM
    <your_table>
GROUP BY
    name;  

问:如果有2个相同名字的记录有年龄差异,是否有可能?如果是这样,请更新问题,以便给出更好的答案。干杯!