单个 table 上的多个 select 语句
Multiple select statement on single table
我想要实现的是让用户能够在给定时间段内查询数据库中具有特定价值的交易,例如“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 - 每个派生 table 必须有自己的别名”错误消息。尝试使用别名,但对复杂的 MySql 查询不是很擅长,并且弄得一团糟。
Table 有列:
transactionid
transactiondate
name
surname
fullnames
credit
debit
amount
reference
想要遍历并输出匹配查询的每一行。
谢谢。
我认为你在这里根本不需要子查询,我不知道你为什么想使用一个:
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
,但它不合适。它应该在子查询结束后立即出现。但同样,我认为您在这里不需要子查询。
我想要实现的是让用户能够在给定时间段内查询数据库中具有特定价值的交易,例如“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 - 每个派生 table 必须有自己的别名”错误消息。尝试使用别名,但对复杂的 MySql 查询不是很擅长,并且弄得一团糟。
Table 有列:
transactionid
transactiondate
name
surname
fullnames
credit
debit
amount
reference
想要遍历并输出匹配查询的每一行。
谢谢。
我认为你在这里根本不需要子查询,我不知道你为什么想使用一个:
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
,但它不合适。它应该在子查询结束后立即出现。但同样,我认为您在这里不需要子查询。