php - 有没有办法在sql中显示所有具有匹配字段的数据?
问题描述
我有 2 张桌子
cbmsH
hh_id | name | age
9437556 | John | 40
9886016 | Doe | 35
建立信任关系
hh_id | name | age
9437556 | Peter | 41
9886016 | Tony | 35
9886016 | Thor | 32
9886016 | Loki | 30
我期待这样
hh_id | name | age
9437556 | John | 40
9437556 | Peter | 41
____________________________
hh_id | name | age
9886016 | Doe | 35
9886016 | Tony | 35
9886016 | Thor | 32
9886016 | Loki | 30
____________________________
我试过这个
SELECT cbmsh.hh_id AS head_hhid, cbmsh.barangay AS head_barangay, cbmsh.memno AS head_memno,cbmsh.last_name AS head_last ,cbmsh.first_name AS head_first ,cbmsh.mid_name AS head_mid,cbmsh.relationship,cbmsh.sex AS head_sex,cbmsh.birthdate AS head_birthdate,cbmsh.age AS head_age,cbmsh.occupation AS head_occupation,cbmsh.pwd_ind, cbms.hh_id AS mem_hhid, cbms.barangay, cbms.memno,cbms.last_name AS mem_last,cbms.first_name AS mem_first,cbms.mid_name AS mem_mid,cbms.relationship AS mem_relationship,cbms.sex AS mem_sex,cbms.birthdate AS mem_birthdate,cbms.age AS mem_age,cbms.occupation AS mem_occupation,cbms.pwd_ind
FROM cbmsh, cbms
WHERE cbmsh.hh_id = cbms.hh_id
GROUP BY head_hhid
但它只显示 1 个这样的数据。而不是显示具有相同 hh_id 的所有记录
hh_id | name | age
9886016 | Doe | 35
9886016 | Tony | 35
有人可以帮我吗?任何帮助将不胜感激!今天是个好日子
解决方案
你有两个问题。
- 你不想要
JOIN
桌子,你想要UNION
它们。JOIN
用于将两个表的相关行合并为结果中的一行。但是您希望将所有行分开。 - 您不想要
GROUP BY
,它用于将具有相同列值的行聚合到单行中(例如,在对行进行计数或求和时)。如果要将行分开但在一起,请使用ORDER BY
.
所以查询应该是
SELECT *
FROM (
SELECT hh_id, name, age
FROM cbmsh
UNION
SELECT hh_id, name, age
FROM cbms
) x
ORDER BY hh_id
推荐阅读
- amazon-web-services - 从 Yii 应用程序上传 Aws s3 存储桶(私有存储桶)上的文件,并为用户提供文件访问权限
- aws-lambda - 使用 AWS CodeBuild 构建的 AWS Lambda 中的 cx_Oracle 问题
- r - 当前可视化中的 Cel 着色/alpha 形状
- javascript - 如何在箭头函数中使用 Typescript 泛型添加两个参数
- php - Laravel 在字段验证后插入记录
- javascript - onClick={OnButtomSubmit} 函数在 ReactJs 中不起作用
- selenium - 如何验证在移动设备上滚动的触摸动作的准确性?
- python - 如何对看不见的文本数据进行分类?
- macos - 在 mac OS 中将包含特定字符的文件中的字符串替换为“sed”
- python - 仅在之前未出现时才将值附加到列表中