5.3. Useful SQLs
5.3.1. Найти те фразы, у которых отличается модуль в английском и русском переводе
SELECT eng_phrase.Phrase, eng_phrase.Translation, eng_phrase.Module, rus_phrase.Translation, rus_phrase.Module
FROM int_Phrase eng_phrase
LEFT JOIN int_Phrase rus_phrase ON eng_phrase.Phrase = rus_phrase.Phrase AND rus_phrase.LanguageId = 2
WHERE (eng_phrase.LanguageId = 1) AND (eng_phrase.Module <> rus_phrase.Module)
5.3.2. Поставить всем пользователям в базе тестовые почтовые адреса (с возможностью обращения процесса)
UPDATE int_PortalUser
SET Email = CONCAT(REPLACE(Email, '@', '_at_'), '@alex.in-portal.net')
WHERE Email <> ''
5.3.3. Массово поменять основную (primary) группу пользователям
UPDATE `int_UserGroup`
SET GroupId = 20
WHERE (GroupId = 13) AND (PrimaryGroup = 1) AND (PortalUserId BETWEEN 1600 AND 2100)
5.3.4. Заменить Email пользователям из перечисленных групп (используется sub-select query)
UPDATE int_PortalUser
SET Email = REPLACE(Email, '@alex.in-portal.net', '@osaka.intechnic.com')
WHERE PortalUserId IN (
SELECT PortalUserId
FROM int_UserGroup
WHERE PrimaryGroup = 1 AND (GroupId IN (19,20))
)
5.3.5. Найти названия переменных, у которых есть дубликаты в таблице PersistentSessionData
SELECT PortalUserId, VariableName, COUNT(*)
FROM `int_PersistantSessionData`
GROUP BY PortalUserId, VariableName
HAVING COUNT(*) > 1
ORDER BY `PortalUserId` ASC , `VariableName` ASC
5.3.6. Убрать компонент даты из временной метки (timestamp)
UPDATE int_Flights
SET DepartureTime = UNIX_TIMESTAMP(
CONCAT(
MAKEDATE(
1970,
1
),
' ',
MAKETIME(
DATE_FORMAT(FROM_UNIXTIME(DepartureTime), '%H'),
DATE_FORMAT(FROM_UNIXTIME(DepartureTime), '%i'),
DATE_FORMAT(FROM_UNIXTIME(DepartureTime), '%s')
)
)
)
WHERE DepartureTime > 75599;
5.3.7. Изменить пароль у «root» пользователя
UPDATE `int_ConfigurationValues`
SET VariableValue = MD5( CONCAT(MD5('root'), 'b38') )
WHERE VariableName = 'RootPass';
TRUNCATE TABLE int_Cache;
Примечание
Во всех SQL запросах (в данной статье) int_ это TABLE_PREFIX.