我要实现的是使用户能够在给定时间内查询数据库中特定交易的价值,例如“ 34666”和名称。像这样:
SELECT * FROM (SELECT * FROM Ledger WHERE transactiondate BETWEEN '2018-01-01' AND '2018-10-10') WHERE name='Customer' OR surnname='Customer' OR fullnames LIKE %Customer% AND (credit="34666" OR debit="34666") sub ORDER BY transactionid ASC;
但是以上显然是不正确的陈述。只是给我想要实现的想法。上面显示“#1248-每个派生表必须具有自己的别名”错误消息。尝试使用别名,但对复杂的MySql查询不是很好,并且把所有东西弄糊涂了。
表格具有列:
transactionid
transactiondate
name
surname
fullnames
credit
debit
amount
reference
想要遍历并输出与查询匹配的每一行。
谢谢。
答案 0 :(得分:0)
我认为这里根本不需要子查询,也不知道为什么要使用一个子查询:
SELECT *
FROM Ledger
WHERE
transactiondate BETWEEN '2018-01-01' AND '2018-10-10' AND
(name = 'Customer' OR surnname = 'Customer' OR fullnames LIKE '%Customer%') AND
(credit = '34666' OR debit = '34666')
ORDER BY
transactionid;
错误的确切原因是您的查询有一个没有别名的子查询。确实有 ,其中有一个别名sub
,但位置不正确。它应该在子查询结束后立即出现。但是再次,我认为您不需要在这里进行子查询。
答案 1 :(得分:0)
选择*来自
分类帐
在哪里
在('2018-01-01')和('2018-10-10')之间的交易日期
and(name ='Customer'OR surnname ='Customer'OR fullnames Like'%Customer%')
AND(credit ='34666'OR debit ='34666')ORDER BY transactionid ASC;