【发布时间】:2017-08-17 00:09:35
【问题描述】:
我想要来自多个表的记录。我的要求是从一个表中获取所有列,并从不同表中获取一些感兴趣的列。
我们可以使用“select * from table_name”进行正常的获取查询。但这不适用于连接查询,我必须为该表编写所有列名。
那么,有没有办法使用 * 来获取连接查询中的记录?
SELECT Item.ItemId, Item.Item, ItemIndex.CurrentAverageScore, ItemStyle.ItemStyleId, ItemStyle.ItemStyle, Brewery.BreweryId, Brewery.BreweryDescription, (SELECT PersonalRating FROM UserItemJournal WHERE ItemId = ItemIndex.ItemId) As PersonalRating, (SELECT Notes FROM UserItemJournal WHERE ItemId = ItemIndex.ItemId AND PersonalRating IS NOT NULL) As Notes FROM Item, ItemIndex, ItemStyle, Brewery, UserItemJournal WHERE Item.ItemId = ItemIndex.ItemId AND Item.LanguageId = 1 AND ItemStyle.ItemStyleId = ItemIndex.ItemStyleId AND ItemStyle.LanguageId = 1 AND Brewery.BreweryId = ItemIndex.BreweryId AND Brewery.LanguageId = 1 AND UserItemJournal.PersonalRating IS NOT NULL
在上面的查询中,我想要项目表中的所有列。 我认为 * 有局限性,我们只能将 * 用于单个表。如果我错了,请纠正我。
谢谢
【问题讨论】:
-
请展示你的作品
-
你能发布你的查询
-
请稍等,请用 SQL 查询更新问题。
-
无论如何,除了快速测试之外,您不应该使用 SELECT *。传输所有额外数据存在主要的效率问题。如果您的应用程序不平凡,您会看到通过仅传输您需要的列而显着增加。
-
select * 不起作用,我不知道我们什么时候可以使用 * 什么时候不可以。使用signle table fetch * 可以正常工作,但使用多个表则不行。