免责声明:至少可以说,我的 SQL 技能是基本的。
假设我在同一个数据库的不同表中有两种相似的数据类型。
第一个表称为精装表,字段如下:
hbID | hbTitle | hbPublisherID | hbPublishDate
第二个表称为平装本,其字段包含相似的数据,但字段名称不同:
pbID | pbTitle | pbPublisherID | pbPublishDate
我需要检索出版商 ID 为 7 的最近 10 本书的精装书和平装书。
这是我到目前为止所拥有的:
SELECT TOP 10
hbID, hbTitle, hbPublisherID, hbPublishDate AS pDate
bpID, pbTitle, bpPublisherID, pbPublishDate AS pDate
FROM hardback CROSS JOIN paperback
WHERE (hbPublisherID = 7) OR (pbPublisherID = 7)
ORDER BY pDate DESC
这将返回每行七列,其中至少三列可能是也可能不是错误的发布者。可能有四个,具体取决于 的内容pDate
,如果其他六列用于正确的发布者,这几乎肯定会成为问题!
为了发布该软件的早期版本,我运行了两个单独的查询,每个查询获取 10 条记录,然后按日期对它们进行排序并丢弃后十条,但我只知道必须有更优雅的方式来做到这一点!
有什么建议么?
旁白:当我的 Mac 突然出现内核崩溃时,我正在查看我在这里写的内容。重新启动,重新打开我的标签,我输入的所有内容都还在这里!Stack Exchange 网站很棒 :)