当前位置: 首页 > 面试题库 >

在联接中,如何在所有列名之前添加其来源表的前缀

经昱
2023-03-14
问题内容

我正在分析一个相当糟糕的旧数据库/代码库,试图通过将查询合并到联接中来减少服务器负载(包括电子邮件警报cron作业,该作业通常会调用超过一百万个单独的查询)。

SELECT * FROM 
class_alerts_holding ah 
INNER JOIN class_listings l ON l.id = ah.lid 
INNER JOIN class_users u ON u.id = ah.uid
LEFT JOIN class_prodimages pi ON pi.pid = ah.lid

这会吐出120列…

aid | id | lid | uid | oid | catName | searchtext | alertfreq | listType | id | owner | title | section | shortDescription | description | featured | price | display | hitcount | dateadded | expiration | url | notified | searchcount | repliedcount | pBold | pHighlighted | notes | ...

为了帮助我分析如何构造新查询,如果我可以在结果中的列前面加上来自JOIN的表的前缀,那就太好了。

class_alerts_holding.aid | class_alerts_holding.id | class_listings.lid | ...

有没有办法做到这一点?


问题答案:

你可以

select ah.*, l.*, u.*, pi.* from ...

那么这些列将至少按表顺序返回。

为了更好地区分每两列列,您还可以添加“ delimiter”列,如下所示:

select ah.*, ':', l.*, ':', u.*, ':', pi.* from ...

(已编辑,删除了不必要的显式别名,请参阅注释。)



 类似资料:
  • 正如你可以在这个问题中检查的,在熊猫0.16中添加一列的最佳方法是 其中new_column是新列的文字名称(即使它不是以字符串形式写入)。 这对我来说是个问题,因为我想添加许多列,这些列的名称由变量指定 我试过这个: 它不起作用:这样,只添加了一列(名为“new\u col\u name”) 预期结果是,给定一个具有列[“a”、“B”、“C”]的表,该表将具有列[“a”、“B”、“C”、“a_n

  • 我有一个mysql数据库表,其中我需要将前缀“35-”添加到某个列/字段()的所有值中,该列/字段的号高于500。因此,例如,我希望productcode值更改为,并且在表的所有其他行中类似。 另外一个问题是,此列是该表的主键,但我试图通过添加一个额外的索引列,将其定义为主键,擦除“ProductCode”上的索引,并尝试以下查询(意图稍后再次将其定义为主索引)来解决这一问题: 我没有收到任何错误

  • 问题内容: 有没有一种方法可以使用javascript和JQuery添加一些其他字段,这些字段将使用POST从HTTP表单发送? 我的意思是: 问题答案: 是的。您可以尝试使用一些隐藏的参数。

  • 问题内容: 我的Web安全配置中包含以下代码: 因此,我在数据库中添加了一个具有“ ADMIN”角色的用户,并且尝试与此用户登录时总是收到403错误,然后为spring启用了日志功能,并发现以下行: 为什么Spring Security在寻找“ ROLE_ADMIN”而不是“ ADMIN”? 问题答案: 在Spring 4中,有两个方法,并且在类中定义。这两种方法仅检查你的自定义角色名称,而不添加

  • 我的Web安全配置中有以下代码: 因此,我在数据库中添加了一个具有“admin”角色的用户,当我使用该用户进行登录时,总是会出现403错误,然后我启用了spring的log,并发现了这一行: 为什么Spring Security要查找“role_admin”而不是“admin”?

  • 我的Web安全配置中有以下代码: 因此,我在我的数据库中添加了一个具有“ADMIN”角色的用户,当我尝试使用该用户登录时,总是出现403错误,然后我为spring启用了日志,我发现了以下行: 为什么Spring Security要寻找“ROLE_ADMIN”而不是“ADMIN”?