作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的 SQL 问题:
Mysql Database xyz
Table 1
-----------------------
Email Name
1.john@doe.com john
-----------------------
Table 2
-----------------------
Email Color
1.john@doe.com red
2.john@doe.com orange
3.john@doe.com blue
-----------------------
执行查询的正确方法是什么:
SELECT * FROM ... WHERE table1.email ='john doe'
这样我就得到了mysql查询结果
[john@doe.com,john,red,orange,blue]
我的糟糕解决方案:
SELECT Name ,
(SELECT GROUP_CONCAT(Color) As Colors FROM Table2 WHERE Table2.Email = 'john@doe.com')
FROM Table1
WHERE Table1.Email = 'john@doe.com';
最佳答案
您的解决方案有效,但更好的方法是使用联接。
SELECT t1.email, t1.name, GROUP_CONCAT(t2.color) AS colors
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON t1.email = t2.email
WHERE t1.email = 'john@doe.com';
这更好,因为您只需在一处指定您要查找的电子邮件即可。如果您将 WHERE
子句替换为 GROUP BY t1.email
,您就可以得到所有人。
关于mysql - 连接此表的正确 SELECT 语句是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54353828/
我是一名优秀的程序员,十分优秀!