mysql - 如何获取表中在特定字段上共享值的所有行?

标签 mysql sql

例如

如果我有一个名为 students 的表,它有 4 个字段 id、fname、lname 和 dob(出生日期)我如何检索所有生日相同的学生的名字(不询问特定的出生日期)以及他们分享的日期?

id int primary key not null and auto_increment
fnamelname 都是varchar
dob 是约会对象

id    fname     lname       dob

1.    Nick      Tailor      1993-04-27
2.    Mary      White       1987-11-13
3.    Helen     Wilde       1993-04-27
4.    George    Bishop      1981-02-29
5.    John      Walker      1981-02-29
6.    Vincent   Valentine   1981-02-29

结果是

fname     lname       dob

Nick      Tailor      1993-04-27
Helen     Wilde       1993-04-27
George    Bishop      1981-02-29
John      Walker      1981-02-29
Vincent   Valentine   1981-02-29

Mary 没有在任何地方显示,因为她没有与表中的任何人共享 dob。

最佳答案

希望对你有帮助

SELECT fname, lname, dob
FROM students
WHERE dob IN (SELECT dob FROM students GROUP BY dob HAVING count(*) > 1);

确保检查 dob 列的数据库配置,在我这边运行查询以测试它是否有效时,我得到了一个日期错误,因为 1981 年没有 2 月 29 日:D

关于mysql - 如何获取表中在特定字段上共享值的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47618841/

相关文章:

php - 为什么 PHP/MySQL 以不同的方式插入我的汉字?

php - 验证记录是否已成功插入的最佳方法是什么?

使用 Htaccess 将 php $_GET 项目添加到虚拟子域

php - 如何构建 SQL 查询以从两个表和一个序列化列获取数据

sql - 使用 SQL 对共享共同状态的连续项目进行分组(包括虚拟数据)

mysql - 从 SELECT 创建的临时表中的多行中选择数据

mysql - 计算两个纬度/经度点之间的距离不一致

python - 我如何使用 Django objects.filter 执行此操作?

mysql - 设计工作机会表格

sql - 返回 SQL Server 行中给定 HTML 标记内的子字符串