如何在MySQL中的一列中添加多个值? |
您所在的位置:网站首页 › photoid翻译 › 如何在MySQL中的一列中添加多个值? |
![]() 通常,如果您有一个字段的多个值,例如,一个人有许多照片,我们将有2个表. 人:id ,名称照片:id,persyid,url 对于人1的每张照片,我们将在照片表中有一排人表中的人. 检索数据: SELECT * FROM photo WHERE personId = :id; SELECT * FROM photo WHERE personId = :id;如果您想要所有与所有照片的人 SELECT person․*, photo․id photoId, photo.url photoUrl FROM person, photo WHERE personId = :id;如果您想要所有没有照片的人1,3,5 SELECT * FROM photo WHERE personId IN (1,3,5);注意: 与group的以下查询,您:不能 SELECT * 可以 SELECT person․*
可以语句还必须按字段选择组 SELECT person․id GROUP BY person․id SELECT person․* GROUP BY person․id示例: 如果您希望所有拥有超过1的人照片(在此选择中不要使用 *) SELECT person․id, count(*) as photoCount FROM person, photo GROUP BY person․id HAVING photoCount > 1;如果您想要所有PE仅需1张照片(在此中选择中不要使用普通 *) SELECT person․id, count(*) as photoCount FROM person, photo GROUP BY person․id HAVING photoCount = 1;
如果您只希望所有只有1张照片的人而无需返回计数 SELECT person․* FROM person, photo GROUP BY person․id HAVING count(*) = 1;最终注意: 上面的代码样本由于Quora功能而非功能性,该功能会将任何dot ID转换为URL,破坏我的帖子.为了避免这种情况,我已经更换了所有.和 . (Unicode字符:一个点领导者0x2024) 推荐答案2最好只为值创建一个新表. 我注意到有人提到有人将值存储在一起在由逗号分隔的同一列中.我高度 建议反对 ,因为这是可怕的数据库实践.如果您有一个"人"表 person (id,name,phonenumber) 和'人'可以拥有一个以上的电话号码, 您可以创建另一个'Pernemphone Phone'表.跨度> 最终结果看起来像:
person (id) ,name) pernemphone (id,phonenumber) 你可以当您需要时,使用简单的SQL查询将两个单独的表加在一起. SELECT * FROM Person p, PersonPhone pp WHERE p.Id = pp.Id 推荐答案3对于本机数据类型不可能.但是您可以探索支持数组数据类型的PostgreSQL. 可以选择存储为JSON,但我通常不建议 - 这是某些用例,但是它通常使用错误的方式. JSON不受数据完整性的保护,它与它没有关系,没有模式,并且在较大的数据集中查找的情况将非常慢.但是,如果这些都不重要,则可以使用JSON. 通常,在MySQL Land中,正确的方式是与其他表建立关系. 推荐答案4通常不会这样做,但是在某些情况下有用时.例如,保存从其他地方发送的多维数组(例如,来自浏览器). 定义了db中的斑点字段(blob效率略高于varchar),并序列化数组,要读取它使用Un-serialize. 嗯,这是PHP,但我敢肯定其他语言会做类似的事情. 您也可以转换为JSON,然后可以转换为Hex64,但我没有尝试过. chris.推荐答案5 我们将JSON使用.主要原因是我们的值数量可能会随着时间而变化.因此,我们保持灵活性而无需进入许多列. |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |