所以想象一下,我有3个相关的表,每个表有10列,分别是用户,设置,活动日志。显然,users table
会在其中包含id
列作为主键,而settings table
和activitylogs table
会有user_id
列。运行下面的查询将返回表格id
和users table
中user_id
,settings
列中的所有列,包括activitylogs
列。
select * from users
inner join settings on users.id = settings.user_id
inner join on activitylog on users.id = activitylogs.user_id
问题在于我不希望在其他表上获得user_id
列,并且我不想最终编写一个非常长的查询来指定我想要获取的所有列。所以我想我可以创建一个看起来像这样的查询
select all except id from users
也可以与连接一起使用。
select all except activitylogs.user_id, settings.user_id from users
inner join settings on users.id = settings.user_id
inner join activitylogs on users.id = activitylogs.user_id
实际上会返回除明确指定的列之外的所有列。
如果您有任何与此相关的内容,或者您可以将我指向与此相关的任何博客帖子,请执行此操作。
答案 0 :(得分:1)
不幸的是,你的表结构没有这种方法可以删除mysql中的重复coloums。
虽然mysql提供了一种在使用连接时删除重复的coloums的方法。如果表中的coloum名称相同,则可以使用“Using”而不是“ON”进行连接。 “使用”删除了额外相同的coloum。请参阅以下网址了解更多详情: MySQL ON vs USING?
希望这会有所帮助!
答案 1 :(得分:0)
通常你会编写一个查询来只返回你想要的列,这样你就可以对结果进行更大程度的控制,即使是,这需要列出三十列 - 它;一次性成本,之后所有
考虑将来的更新可能会向用户表添加更多列,可能是存储了大量HTML的备注列,或者包含用户的编码图像的列,或扫描并保存的文档。使用您的方法(或通常选择*),您必须知道该查询的每次使用,并考虑该用例是否需要此附加数据,或者可能导致选择检索大量数据的性能问题实际上并不需要。