mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-08-12 14:21:03 +00:00
fix: MySQL variables can't be used inside IN statements as such
So, if we want to do something like "WHERE abc IN ( @ids )", where @ids would contain a string of "1,2,3", we can't and would need to use FIND_IN_SET() function instead.
This commit is contained in:
@@ -59,7 +59,19 @@ UPDATE %PREFIX%odata
|
|||||||
WHERE
|
WHERE
|
||||||
@natureRegTime = -1
|
@natureRegTime = -1
|
||||||
AND
|
AND
|
||||||
conqured IN ( @village );
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(conqured, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
conqured = @village
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
-- ---------------------------------------------
|
-- ---------------------------------------------
|
||||||
-- remove past reports (conquered > unoccupied)
|
-- remove past reports (conquered > unoccupied)
|
||||||
@@ -68,7 +80,19 @@ DELETE FROM %PREFIX%ndata
|
|||||||
WHERE
|
WHERE
|
||||||
@natureRegTime = -1
|
@natureRegTime = -1
|
||||||
AND
|
AND
|
||||||
toWref IN ( @village );
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(toWref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
toWref = @village
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
-- ----------------------------------------------------------------
|
-- ----------------------------------------------------------------
|
||||||
@@ -81,7 +105,19 @@ SET
|
|||||||
WHERE
|
WHERE
|
||||||
@natureRegTime > -1
|
@natureRegTime > -1
|
||||||
AND
|
AND
|
||||||
wref IN ( @village );
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(wref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
wref = @village
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
-- -----------------------------------------------------------------------
|
-- -----------------------------------------------------------------------
|
||||||
@@ -116,7 +152,19 @@ UPDATE %PREFIX%units u
|
|||||||
(
|
(
|
||||||
@village > -1
|
@village > -1
|
||||||
AND
|
AND
|
||||||
vref = @village
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(vref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
vref = @village
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND
|
AND
|
||||||
@@ -172,7 +220,19 @@ UPDATE %PREFIX%units u
|
|||||||
(
|
(
|
||||||
@village > -1
|
@village > -1
|
||||||
AND
|
AND
|
||||||
vref = @village
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(vref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
vref = @village
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND
|
AND
|
||||||
@@ -226,7 +286,19 @@ UPDATE %PREFIX%units u
|
|||||||
(
|
(
|
||||||
@village > -1
|
@village > -1
|
||||||
AND
|
AND
|
||||||
vref = @village
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(vref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
vref = @village
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND u31 <= (
|
AND u31 <= (
|
||||||
@@ -278,7 +350,19 @@ UPDATE %PREFIX%units u
|
|||||||
(
|
(
|
||||||
@village > -1
|
@village > -1
|
||||||
AND
|
AND
|
||||||
vref = @village
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(vref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
vref = @village
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND u31 <= (
|
AND u31 <= (
|
||||||
@@ -329,7 +413,19 @@ UPDATE %PREFIX%units u
|
|||||||
(
|
(
|
||||||
@village > -1
|
@village > -1
|
||||||
AND
|
AND
|
||||||
vref = @village
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(vref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
vref = @village
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND u31 <= (
|
AND u31 <= (
|
||||||
@@ -381,7 +477,19 @@ UPDATE %PREFIX%units u
|
|||||||
(
|
(
|
||||||
@village > -1
|
@village > -1
|
||||||
AND
|
AND
|
||||||
vref = @village
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(vref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
vref = @village
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND u31 <= (
|
AND u31 <= (
|
||||||
@@ -434,7 +542,19 @@ UPDATE %PREFIX%units u
|
|||||||
(
|
(
|
||||||
@village > -1
|
@village > -1
|
||||||
AND
|
AND
|
||||||
vref = @village
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(vref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
vref = @village
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND u31 <= (
|
AND u31 <= (
|
||||||
@@ -495,7 +615,19 @@ UPDATE %PREFIX%units u
|
|||||||
(
|
(
|
||||||
@village > -1
|
@village > -1
|
||||||
AND
|
AND
|
||||||
vref = @village
|
(
|
||||||
|
(
|
||||||
|
-- should we have a list of IDs, we need to use FIND_IN_SET
|
||||||
|
LOCATE(",", @village) > 0
|
||||||
|
AND
|
||||||
|
FIND_IN_SET(vref, @village)
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
-- for a single ID, we use a simple condition which can definitely use an index as well
|
||||||
|
vref = @village
|
||||||
|
)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND u31 <= (
|
AND u31 <= (
|
||||||
|
|||||||
Reference in New Issue
Block a user