mysql - 创建新表时无法获取值
问题描述
SQL 相当新 - 将 MySQL 与 PhpMyAdmin 一起使用 - 我有两个 CSV 表,其中包含需要合并到新 CSV 中的信息,同时删除所有其他不适用的列。我需要的列是email、user_id,需要新建一个名为“role”的列
每个文件的电子邮件列不同,最终结果将是 74 行,而不是 100 行(并非所有电子邮件都会匹配)。到目前为止,我已经能够使用 join 来获取我需要的列。我正在努力的是创建一个具有“角色”的新表并进行数据传输。
该表已创建,具有正确的列,但未显示示例和测试中的值。
我开始的:
Select example.user_name,
test.email
from example
join test
on example.user_email = test.email
我要去的地方:
CREATE table test2 (role text)
select email, user_name
from (
Select example.user_name,test.email
from example
join test
on example.user_email = test.email)
As Test
我已经做了 4 个小时(我花了很多时间才达到这一点),这个障碍是最困难的。任何帮助将不胜感激!
Table 1 Example.
User ID :1111.
User_email: example.com.
Table 2 Test
first_name: Tom
last_name: Laugh.
email: example.com
第一个查询将这两个连接在一起。第三个表需要添加“角色”,这将是一个定义的值,看起来像
Table 3 All together.
Role: onboarding.
user_id: 1111.
user_email: example.com
希望这有助于澄清事情!为混乱道歉。
解决方案
CREATE TABLE test2 ( user_email VARCHAR(255),
user_id INT PRIMARY KEY,
user_name VARCHAR(255),
role TEXT)
SELECT user_email,
example.user_id,
CONCAT_WS(' ', test.first_name, test.last_name) user_name,
'onboarding' role
FROM example
JOIN test USING (user_email);
- 完全指定新的表结构。这消除了将来可能出现的一些问题(例如,您可能会获得比您需要的短的字符串列)。
- 在 SELECT 部分完全指定列名,并严格匹配表定义中的列名 - 如果不是,则目标列将为空,但将添加多余的列,其中包含不需要的(有时是奇怪的)名称。
- 始终使用完全相同的名称来匹配不同表中的列,直到不可能为止。
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=5e7c77aa8ad2f5f44e1851bd3ebe17e7
推荐阅读
- arrays - 为什么 Swift Array 的行为与其他语言的 List 不同?
- ios - 使用 Alamofire 进行 Ssl 固定不会阻止其他域中的请求
- javascript - NodeJS:如何将大字符串分成一个数字数组,然后将所有具有偶数索引的字符串相加
- linux - 如何只同步新文件和目录?
- excel - 后期绑定与早期绑定
- python - c = a + b; 如何使 c 始终反映对 a 或 b 所做的任何更改?
- http-post - 使用 http POST 向服务器发送字符串
- java - Groovy 字节数组被隐式转换为 ArrayList
- jquery - 在悬停时使用画布交叉淡入淡出背景图像
- java - 如何仅根据 Guava 中外部存储的结果缓存一些活动数据?