Ответы пользователя по тегу SQL
  • Очередной вопрос по Mysql?

    GeneMoss
    @GeneMoss
    void
    Вы сделали умножение таблиц, получив очень большое число элементов. Вам нужно объединить выдачу через UNION.
    SELECT SUM(cnt) FROM (
    	SELECT COUNT(*) as cnt FROM users_data WHERE private='0'
    	UNION
    	SELECT COUNT(*) as cnt FROM deleted WHERE private='0'
    	UNION
    	SELECT COUNT(*) as cnt FROM mails WHERE private='0'
    ) u;
    Ответ написан
    3 комментария
  • Выбор последних данных для каждого пользователя из mysql

    GeneMoss
    @GeneMoss
    void
    Попробуйте так:
    SELECT data.* 
    FROM userData AS data
    JOIN (
    	SELECT id, MAX(dataTime) AS dataTime
    	FROM userData
    	WHERE id IN (1, 222, 333, 444, 555)
    	GROUP BY id
    ) AS max USING (id, dataTime);
    Ответ написан
    1 комментарий
  • Обрезка строки в sql

    GeneMoss
    @GeneMoss
    void
    В MySQL, например, есть две функции, которые могут помочь:
    — INSTR — возвращает первую позицию подстроки в строке.
    — LEFT — обрезает текст с начала до указанной позиции.

    Поэтому можно сделать так (-1 нужен, чтобы в результат не включать пробел):
    SET @str = 'Некоторая строка с пробелами';
    SELECT LEFT(@str, INSTR(@str, ' ') - 1);

    Но, если в строке нет пробелов, то вернется строка с нулевой длиной. Для этого можно добавить условие, и если нет пробелов в строке — возвращать исходную строку.
    SET @str = 'Некоторая_строка_без_пробелов';
    SELECT IF(
    	INSTR(@str, ' ') = 0, 
    	@str,
    	LEFT(@str, INSTR(@str, ' ') - 1)
    );

    P.S.: Но, если Вам это нужно не для составления сложных вложенных запросов, то лучше такую обработку перенести на клиентский код.
    Ответ написан
    Комментировать