编写 SQL 查询工作台
Posted
技术标签:
【中文标题】编写 SQL 查询工作台【英文标题】:Writing SQL Queries Workbench 【发布时间】:2021-03-01 20:47:02 【问题描述】:我在编写此查询时遇到了一些问题。这是我目前所拥有的:
查找在一次交易中存入最高金额的客户名称(包括交易金额)。
select name, amount
from customer, transaction, account
where account.owner_ssn = customer.ssn
and account.type = transaction.type
order by transaction.amount desc
limit by one;
**这是银行数据库:**
CREATE TABLE customer (
name VARCHAR(20),
sex CHAR(1),
ssn CHAR(9) NOT NULL,
phone CHAR(15),
dob DATE,
address VARCHAR(50),
PRIMARY KEY(ssn)
);
CREATE TABLE account (
number CHAR(16) UNIQUE NOT NULL,
open_date DATE,
type CHAR(20),
owner_ssn CHAR(9) NOT NULL,
PRIMARY KEY(number)
);
CREATE TABLE transaction (
id INT(20) UNIQUE NOT NULL,
amount DECIMAL(9,2),
tdate DATE,
type CHAR(10),
account_num CHAR(16),
PRIMARY KEY(id)
);
【问题讨论】:
请不要在使用 mysql 时标记 SQL Server!不要对我们大喊大叫。并解释你遇到了什么麻烦?什么没有按您的预期工作?也请每个问题只问一个问题 - 而不是 4 个。并且每次都显示示例数据、预期结果和您的尝试。 很抱歉,我刚开始使用 ***。我不太了解 MySQL 和 SQL Server 之间的区别,抱歉。我删除了标签。你大喊大叫是什么意思?对不起,如果我传达了!我只是想我会发表一篇文章,因为它都是用那个数据库编写查询。至于结果,我不确定问题是否很清楚。 我看到了你的问题、你提出的解决方案和一些细节,但你的问题是什么? 第四个给我一个错误,我不确定前三个是否正确。 MySQL 和 SQL Server 以及两个完全不同的数据库引擎。大喊大叫是让你的头衔全部大写。问题应该只问一个问题。要问一个好的 SQL 问题,它应该总是有样本数据、预期结果和你的尝试——你可能很清楚,但你需要做更多的工作让其他人理解。样本数据 + 预期结果是一种非常清晰的方式来展示您希望实现的目标。如果您以 DDL+DML 的形式提供示例数据,那么人们可以复制并粘贴出来进行测试。 【参考方案1】:以下查询将返回单笔交易中存入最高金额的客户名称。如果有多个客户的最高金额相同,则将选择第一个存入的客户。
select name, amount
from customer c inner join account a
on c.ssn=a.owner_ssn
inner join transaction t
on a.type = t.type
order by t.amount desc, t.tdate
limit 1;
【讨论】:
以上是关于编写 SQL 查询工作台的主要内容,如果未能解决你的问题,请参考以下文章
我在 php 中编写了一个 sql 查询,任何人都可以建议这段代码可以工作吗?
Laravel 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作