单表上的multiple select语句

vojdkbi0  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(548)

我想要实现的是让用户能够在给定的时间段内查询数据库中的特定事务,比如“34666”和name。比如:

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

希望循环并输出与查询匹配的每一行。
谢谢。

kfgdxczn

kfgdxczn1#

选择*自
分类帐
哪里
交易日期介于('2018-01-01')和('2018-10-10')之间
和(name='customer'或surnname='customer'或全名,如'%customer%')
和(credit='34666'或debit='34666')按交易ID asc订购;

vzgqcmou

vzgqcmou2#

我认为您根本不需要子查询,我不知道您为什么要使用子查询:

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 在里面,但在外面。它应该出现在子查询结束之后。不过,我认为这里不需要子查询。

相关问题