MySQL 找出 select 语句中使用了哪个 WHERE 子句
MySQL find out which WHERE clause was used in select statement
我有一个 select
语句(如下),在我的 where
子句中有多个 ... or ...
连接条件,(很快就会有 30+ or
条件)
我想用它做的是有一个列告诉我 where
子句中的哪个 or
被触发了。
这可能吗?
我试过搜索,但我似乎碰壁了。任何建议或正确方向的观点将不胜感激。谢谢
select
Details_TransactionDate as Transaction_Date,
Details_Credit as Credit,
MSD.TicketNo as Ticket_Number,
Details_Pn as Description,
MSD.Nun as Numbers
from
MS_Transactions MST
left join MBS_Details as MSD on MST.TicketNo = MSD.TicketNo
where
Details_Pn like '%SALARY%'
or Details_Pn like '%Mid MTH%'
or Details_Pn like '%Mid Month%'
or Details_Pn like '%Pay%'
or Details_PNarration like '%SAL%'
and day(Details_TransactionDate) between 23 and 25
and weekday(Details_TransactionDate) Between 0 and 4;
为避免混淆,您应该在 OR 周围使用正确的 ()
并为每列使用适当的 table anem 别名
您可以使用 CASE 来了解使用了哪个 OR
Select
MST.Details_TransactionDate as Transaction_Date,
MST.Details_Credit as Credit,
MSD.TicketNo as Ticket_Number,
MST.Details_Pn as Description,
MSD.Nun as Numbers,
case
WHEN MST.Details_Pn like '%SALARY%' THEN 'Details_Pn SALARY'
WHEN MST.Details_Pn like '%Mid MTH%' THEN 'Details_Pn Mid MTH'
WHEN MST.Details_Pn like '%Mid Month%' THEN 'Details_Pn Mid Month'
WHEN MST.Details_Pn like '%Pay%' THEN 'Details_Pn Pay'
WHEN MST.Details_PNarration like %SAL%' THEN 'Details_PNarrationSAL'
end or_used
from MS_Transactions MST
Left join MBS_Details as MSD on MST.TicketNo = MSD.TicketNo
where ( MST.Details_Pn like '%SALARY%'
OR MST.Details_Pn like '%Mid MTH%'
OR MST.Details_Pn like '%Mid Month%'
OR MST.Details_Pn %Pay%
OR MST.Details_PNarration like '%SAL%' )
AND DAY(MST.Details_TransactionDate) between '23' and '25' and
WEEKDAY(MST.Details_TransactionDate) Between 0 and 4;
我有一个 select
语句(如下),在我的 where
子句中有多个 ... or ...
连接条件,(很快就会有 30+ or
条件)
我想用它做的是有一个列告诉我 where
子句中的哪个 or
被触发了。
这可能吗?
我试过搜索,但我似乎碰壁了。任何建议或正确方向的观点将不胜感激。谢谢
select
Details_TransactionDate as Transaction_Date,
Details_Credit as Credit,
MSD.TicketNo as Ticket_Number,
Details_Pn as Description,
MSD.Nun as Numbers
from
MS_Transactions MST
left join MBS_Details as MSD on MST.TicketNo = MSD.TicketNo
where
Details_Pn like '%SALARY%'
or Details_Pn like '%Mid MTH%'
or Details_Pn like '%Mid Month%'
or Details_Pn like '%Pay%'
or Details_PNarration like '%SAL%'
and day(Details_TransactionDate) between 23 and 25
and weekday(Details_TransactionDate) Between 0 and 4;
为避免混淆,您应该在 OR 周围使用正确的 () 并为每列使用适当的 table anem 别名 您可以使用 CASE 来了解使用了哪个 OR
Select
MST.Details_TransactionDate as Transaction_Date,
MST.Details_Credit as Credit,
MSD.TicketNo as Ticket_Number,
MST.Details_Pn as Description,
MSD.Nun as Numbers,
case
WHEN MST.Details_Pn like '%SALARY%' THEN 'Details_Pn SALARY'
WHEN MST.Details_Pn like '%Mid MTH%' THEN 'Details_Pn Mid MTH'
WHEN MST.Details_Pn like '%Mid Month%' THEN 'Details_Pn Mid Month'
WHEN MST.Details_Pn like '%Pay%' THEN 'Details_Pn Pay'
WHEN MST.Details_PNarration like %SAL%' THEN 'Details_PNarrationSAL'
end or_used
from MS_Transactions MST
Left join MBS_Details as MSD on MST.TicketNo = MSD.TicketNo
where ( MST.Details_Pn like '%SALARY%'
OR MST.Details_Pn like '%Mid MTH%'
OR MST.Details_Pn like '%Mid Month%'
OR MST.Details_Pn %Pay%
OR MST.Details_PNarration like '%SAL%' )
AND DAY(MST.Details_TransactionDate) between '23' and '25' and
WEEKDAY(MST.Details_TransactionDate) Between 0 and 4;