在只读SQL中的字段之前添加字符串时出现问题
麻烦 将Reason中包含的字段前的“Type”和“Code”添加到只读数据库 原始问题 此处需要使用在只读SQL中的字段之前添加字符串时出现问题,sql,Sql,麻烦 将Reason中包含的字段前的“Type”和“Code”添加到只读数据库 原始问题 此处需要使用联合运算符。需要找到特定的creditcode和jobtype,请参阅下面的错误代码 我的代码: SELECT cust_id, creditcode as 'Reason' FROM publishers WHERE creditcode IS 'D' UNION SELECT cust_id, jobtype as 'Reason' FROM bookjobs WHERE jobtype
联合
运算符。需要找到特定的creditcode和jobtype,请参阅下面的错误代码
我的代码:
SELECT cust_id, creditcode as 'Reason'
FROM publishers
WHERE creditcode IS 'D'
UNION
SELECT cust_id, jobtype as 'Reason'
FROM bookjobs
WHERE jobtype IS 'R';
给出:
cust_id Reason
---------- ----------
A01 R
D04 D
E05 R
然而,需要的是:
cust_id Reason
---------- ----------
A01 Type R
D04 Code D
E05 Type R
如果您使用的是
PostgreSQL
,您可以按如下操作,其中|
执行字符串连接。我还添加了排序的orderby
子句
SELECT
cust_id,
'Code ' || creditcode as 'Reason'
FROM publishers
WHERE creditcode = 'D'
UNION ALL
SELECT
cust_id,
'Type ' || jobtype as 'Reason'
FROM bookjobs
WHERE jobtype = 'R'
ORDER BY cust_id;
对于mysql
,您可以使用CONCAT()
函数:
SELECT
cust_id,
CONCAT('Code ' , creditcode) as 'Reason'
FROM publishers
WHERE creditcode = 'D'
UNION ALL
SELECT
cust_id,
CONCAT('Type ' , jobtype) as 'Reason'
FROM bookjobs
WHERE jobtype = 'R'
ORDER BY cust_id;
如果您使用的是
PostgreSQL
,您可以按如下操作,其中|
执行字符串连接。我还添加了排序的orderby
子句
SELECT
cust_id,
'Code ' || creditcode as 'Reason'
FROM publishers
WHERE creditcode = 'D'
UNION ALL
SELECT
cust_id,
'Type ' || jobtype as 'Reason'
FROM bookjobs
WHERE jobtype = 'R'
ORDER BY cust_id;
对于mysql
,您可以使用CONCAT()
函数:
SELECT
cust_id,
CONCAT('Code ' , creditcode) as 'Reason'
FROM publishers
WHERE creditcode = 'D'
UNION ALL
SELECT
cust_id,
CONCAT('Type ' , jobtype) as 'Reason'
FROM bookjobs
WHERE jobtype = 'R'
ORDER BY cust_id;
你可能想要这样的东西:
SELECT cust_id, 'CODE ' || creditcode as Reason
FROM publishers
WHERE creditcode = 'D'
UNION ALL
SELECT cust_id, 'TYPE ' || jobtype as Reason
FROM bookjobs
WHERE jobtype = 'R';
注:
是ANSI标准字符串连接运算符。有些数据库有替代方法,如|
或CONCAT()
+
- 使用
而不是UNION ALL
——除非您特别想承担删除重复项的开销UNION
是SQL中比较值的传统方法,而不是=
是
- 不要在单引号中包含列别名。仅对字符串和日期常量使用单引号
SELECT cust_id, 'CODE ' || creditcode as Reason
FROM publishers
WHERE creditcode = 'D'
UNION ALL
SELECT cust_id, 'TYPE ' || jobtype as Reason
FROM bookjobs
WHERE jobtype = 'R';
注:
是ANSI标准字符串连接运算符。有些数据库有替代方法,如|
或CONCAT()
+
- 使用
而不是UNION ALL
——除非您特别想承担删除重复项的开销UNION
是SQL中比较值的传统方法,而不是=
是
- 不要在单引号中包含列别名。仅对字符串和日期常量使用单引号
'Type'
连接到jobtype
和'code'
连接到creditcode
。查阅数据库管理系统的文档,了解这是如何实现的。不确定使用的是什么RDBMS或DBMS。将源代码输入CodeRunner,然后单击“检查”查看答案是否正确。这个程序不识别CONCAT,这可能是版本上的一个提示。要是我知道管理系统就好了。你在用什么关系数据库?作业?提示:字符串将'Type'
连接到jobtype
和'code'
连接到creditcode
。查阅数据库管理系统的文档,了解这是如何实现的。不确定使用的是什么RDBMS或DBMS。将源代码输入CodeRunner,然后单击“检查”查看答案是否正确。这个程序不识别CONCAT,这可能是版本上的一个提示。但愿我知道管理系统。使用UNION ALL
,而不是UNION
。没有理由产生删除重复项的开销。@GordonLinoff-True实际上编辑了我的答案。谢谢你指出:)太谢谢你了!第一个成功了!我还有一个问题,我2分钟前刚刚添加到我的个人资料中。如果我的答案有帮助,为什么不把它标记为答案:)祝你好运!使用UNION ALL
,而不是UNION
。没有理由产生删除重复项的开销。@GordonLinoff-True实际上编辑了我的答案。谢谢你指出:)太谢谢你了!第一个成功了!我还有一个问题,我2分钟前刚刚添加到我的个人资料中。如果我的答案有帮助,为什么不把它标记为答案:)祝你好运!你好,戈登,你的源代码创造了奇迹。非常感谢。4分钟前,我修改了我个人资料中的另一个问题,以防你有回答问题的心情。非常感谢。我已经在4分钟前修改了我个人资料中的另一个问题,以防你有回答问题的心情。