Skip to content Skip to sidebar Skip to footer

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?"