1. SELECT * FROM instalmentsdetails WHERE instalmentName='Third Installment'AND studentFeeId='1'
2. select max(`receiptNo`)as `receiptNo` FROM instalmentsdetails
表安装细节
instalmentsDetailsId
studentFeeId
receiptNo
instalmentName
amount
dueDate
fineAmt
waivedAmt
scholarShip
grandTotal
status
有点困惑。如何将这两个查询语句合并为一个查询语句
P.S:一个语句检查条件,另一个语句检查该表中的最大receiveNo 我想在一个查询中使用这两个值
答案 0 :(得分:4)
这是你想要的吗?
SELECT max(`receiptNo`) as `receiptNo`
FROM instalmentsdetails
WHERE instalmentName='Third Installment' AND studentFeeId='1'
更新:怎么样:
SELECT *
FROM instalmentsdetails as inds
INNER JOIN (
SELECT max(`receiptNo`) as `maxreceiptNo`
FROM instalmentsdetails
) as maxt
WHERE inds.instalmentName='Third Installment' AND inds.studentFeeId='1'
这会将过滤器应用于表格,然后添加一个额外的列(最大receiptNo
)
答案 1 :(得分:2)
假设目标是获得:
instalmentsdetails
和instalmentName
studentFeeId
列表
SELECT *, 0 AS receiptNo FROM instalmentsdetails WHERE instalmentName='Third Installment'AND studentFeeId='1'
UNION
select *, max(`receiptNo`) as `receiptNo` FROM instalmentsdetails
显然,OP只想将单独的查询结果合并为一行。在那种情况下:
SELECT
*,
(SELECT max(`receiptNo`) FROM instalmentsdetails) AS maxReceiptNo
FROM instalmentsdetails WHERE instalmentName='Third Installment'AND studentFeeId='1'
答案 2 :(得分:0)
从所有的阅读来看,马特是正确的,但也许我可以帮助解释他在做什么......
查询的第一部分(来自InstalmentsDetails WHERE YourCondition)将获得符合条件的所有记录。
然后,通过对第二个查询执行JOIN(从...中选择max('receiptNo')而没有where子句)将始终返回最大收据的单行单列,而不考虑任何条件。< / p>
这会产生隐含的笛卡尔结果。使用第二个表中的每个记录加入第一个表中的所有内容。由于没有显式连接条件,因此每行将获得与返回列相同的“max()”值。并且由于select max()调用中只有一条记录,因此您不必担心重复。
现在,如果您希望在相同条件下获得最大收据,则只需将相同的条件复制到select max()查询部分。