How To Eliminate Duplicate Calculation In Sql?
I have a SQL that can be simplified to: SELECT * FROM table WHERE LOCATE( column, :keyword ) > 0 ORDER BY LOCATE( column, :keyword ) You can see there is a duplicate of '
Solution 1:
SELECT*, LOCATE( column, :keyword ) AS somelabel
FROMtableWHERE somelabel >0ORDERBY somelabel
Solution 2:
HAVING works with aliases in MySQL:
SELECT*, LOCATE( column, :keyword ) AS somelabel
FROMtableHAVING somelabel >0ORDERBY somelabel
Solution 3:
Jeff Ober has the right idea, but here is an alternative method:
SELECT
t.*
,loc.LOCATED
FROMtable t
INNERJOIN
(
SELECT
primary_key
,LOCATE(column,:keyword) AS LOCATED
FROMtable
) loc
ON t.primary_key = loc.primary_key
WHERE loc.LOCATED >0ORDERBY
loc.LOCATED
Post a Comment for "How To Eliminate Duplicate Calculation In Sql?"