• Как определить позицию строки в бд mysql?

    @Akina
    Идея-то правильная, вот только MySQL обидится на strcmp()...
    (select count(*)
       from `class_item` c2
       where c.data <= c2.data -- либо >= , именно оператор и будет влиять на направление нумерации
           ) as row_num
  • Как изменить данные в SQL таблице?

    @Akina
    Тупо неверный синтаксис запроса UPDATE.
  • Как сгруппировать ответ?

    @Akina
    Агрегация в JSON с группировкой по order_id в CTE, затем агрегация в окончательную форму в основном запросе.
  • Как исправить ошибку 1366 Incorrect string value?

    @Akina
    Например в таблицах присутствуют поля varchar в которых лежит uuid?

    UUID надо переводить в двоичный вид и хранить в BINARY(16). И всякие charset/collation будут тебе до лампадки..
  • Как оптимизировать код sql?

    @Akina
    SELECT *
    FROM users
    WHERE is_private = TRUE
      AND EXISTS (
        SELECT NULL
        FROM users
        WHERE id = 8
          AND is_private = TRUE
        )
    UNION ALL
    SELECT *
    FROM users
    WHERE is_private <> TRUE
      AND NOT EXISTS (
        SELECT NULL
        FROM users
        WHERE id = 8
          AND is_private = TRUE
        )
  • Можно ли как-то при компиляции ехе файла "внутрь" него добавить еще exe файл?

    @Akina
    Александр Ананьев, ну товарищ спросил, я предложил вариант. Извлечение файла из ресов вроде как не бином Ньютона, запуск извлечённого файла тоже. А проблема что прав, что антивируса в любом разе возникнет, как ни сделай.
  • Выбрать из двух записей одну, к-рая добавлена позже?

    @Akina
    FIRST_VALUE() с соотв. спецификацией окна.
    А если для одного акка, так и вовсе сортировка и LIMIT.
  • Как оптимизировать код sql?

    @Akina
    как написать для этого запроса?

    Что значит как? Напиши запрос Если у пользователя с id=8 департамент приватный(is_private=true), то выбрать пользователей только с этим департаментом. Затем напиши запрос Если у пользователя с id=8 нет департамента или департамент открытый(is_private=false), то выбрать пользователей, у которых нет департамента или департамент открытый. Потом объедини их с помощью UNION ALL.

    Да. Для проверки вовсе не надо считать COUNT(), для этого существует WHERE [NOT] EXISTS. Который к тому же работает быстрее. COUNT() должен выбрать и посчитать все записи, тогда как WHERE [NOT] EXISTS, найдя первую соответствующую условиям запись в зависимой таблице, успокоится и перейдёт к следующей записи основной таблицы.

    Плюс у меня подтягиваются еще 4 таблицы и несколько проверок в where, мне нужно дублировать их в union all?

    Да наплевать. Всё равно UNION ALL будет быстрее твоего многоэтажного безобразия.
    И, обрати внимание, один из двух подзапросов при любых условиях вернёт пустой набор записей. Так что UNION ALL по сути - простая формальность.
  • Как оптимизировать код sql?

    @Akina
    Как мне улучшить код?

    Не маяться фигнёй с CASE, а сделать UNION ALL двух отдельных запросов.
  • Как можно реализовать алгоритм замены подстроки в строке?

    @Akina
    Алгоритм неполон и способен на некоторых исходных данных в зависимости от порядка поиска очередной подстроки давать разные результаты.

    Пример.

    A='ababa'
    B='aba'
    C='c'

    Возможные результаты обработки:

    1) 'abc'
    2) 'cba'
  • Как правильно объединить две таблицы?

    @Akina
    как объединить значения характеристик с продуктами

    Начни с вульгарного JOIN всех трёх таблиц и просмотра, что получаешь в ответ. пересортируй поля вывода (числа налево, вербалку направо). Разберись, почему получается именно так.

    в гугле решения найти не смог

    Зачем было вообще туда соваться? лучше учебник по основам SQL почитал бы в это время - было бы куда как больше пользы.
  • Как сделать метод деления пополам?

    @Akina
    Метод половинного деления предназначен только для случаев, когда в исследуемом диапазоне имеется строго один корень. Если их несколько, диапазон следует раздробить (например, сканированием с неким шагом), а в каждом выполнять поиск независимо.

    Общего алгоритма сканирования/дробления нет...

    Теоретически МПД даже может не обнаружить факта наличия нескольких корней - например, если все корни, кроме одного, находятся в первой половине диапазона.
  • Как конвертировать уже существующие записи в другую кодировку?

    @Akina
    AgentSmith72, Если его решение не совпадает с опубликованным, будет хорошо его привести.. и уж совсем отлично - если с объяснением, почему именно так.
  • Как конвертировать уже существующие записи в другую кодировку?

    @Akina
    AgentSmith72, значит, была проблема отображения данных в правильной кодировке, а не проблема кодировки самих данных. В таком случае конвертировать можно было непосредственно в запросе. Более того, и в запросе необязательно, если правильно настроить кодировку ответа (@@ character_set_results).
  • Почему может не работать запрос INTERSECT в MySQL?

    @Akina
    что же пришло на замену?

    С чего бы нужна была замена нестандартизированному средству?

    Если надо - есть WHERE NOT EXISTS или просто NATURAL INNER JOIN.
  • Как отсортировать массив?

    @Akina
    nata32, ну вроде бы русским по белому просил проконтролировать работоспособность... вот Вы правда думаете, что запросы с отрезанным CREATE TABLE без завершающей точки с запятой будут нормально выполнены?

    не поняла INSERT чего ?

    Данных. Значений, вставляемых в таблицы, чтобы на них можно было проверить работу запроса и убедиться, что результат соответствует требуемому.

    к сожалению не знаю что это такое

    https://dbfiddle.uk/
    https://sqlize.online/
    и т.п.

    Для Вашей версии СУБД - https://dbfiddle.uk/JPEWNvHZ
    Fiddle с Вашими структурами и примером наполнения - https://dbfiddle.uk/d0g9y-My

    выше вроде все объяснено, что как и почему или что то конкретно не понятно по вводным данным и получению результата

    Их просто нет - ни исходных данных, ни требуемого результата в формате выходного набора MySQL. То, что есть, неприменимо для серьёзной работы.
  • Как сделать проверку на заполнение столбцов в базе данных mysql и если они пустые (то заполнить), если не пустые то обновить?

    @Akina
    если они пустые (то заполнить), если не пустые то обновить

    Что-то [censored] какая-то формулировка. Получается, что в любом случае нужно изменить текущее значение на новое - а коли так, то какая разница, пустым было старое значение или нет? "Заполнить" и "обновить" - это абсолютно одна и та же операция обновления, выполняемая запросом UPDATE.

    если не пустые то обновить

    Запрос, который проверяет наличие записи, использует для проверки некие значения. Запрос UPDATE, который в случае существования записи должен обновлять, использует те же значения. То есть, для найденной записи он ничего не обновляет (кроме автополя штампа времени, если такое имеется).

    Если исходить из показанного PHP-кода, то надо просто создать соотв. уникальный индекс и использовать INSERT IGNORE.

    $query = 'UPDATE `walets` SET BNB="'.$BNB.'",BUSD="'.$BUSD.'",TRX="'.$TRX.'",USDT="'.$USDT.'"';

    Вот тоже бред... этот запрос обновит ВСЕ записи таблицы, и во все их запишет указанные значения. То есть убьёт все данные.
  • Как исправить ошибку 1366 Incorrect string value?

    @Akina
    а менять collation на продуктивном сервере это безопасно?

    Изменение атрибута COLLATE поля повлияет на выполнение любых запросов, связанных с обработкой этого поля (сравнения, явные в выражениях и неявные при работе встроенных функций). Как это отразится на работе сервера и его приложений, мы предсказать не в состоянии.

    Но вообще-то речь шла об изменении не COLLATE поля, а о CHARACTER SET. Это гораздо более критичная операция, она повлияет на работу с этим полем гарантированно и весьма серьёзно.

    Гораздо разумнее выполнять преобразование в нужную кодировку передаваемого параметра прямо в тексте запроса INSERT/UPDATE, с помощью функции CONVERT().
  • Как отсортировать массив?

    @Akina
    Если Вы хотите получить требуемый результат непосредственно в запросе, то совершенно непонятно, что в вопросе делает PHP. Почему данные показываются не как MySQL-наборы, а как их интерпретация на PHP?

    В общем, рекомендую следующее.
    • Убираете из вопроса всю PHP-шелуху, она не нужна и только засоряет вопрос и мешает работать с проблемой.
    • Сразу ориентируетесь на требуемую задачу - не надо упрощать, а потом соответственно выдавать перлы типа "это всё отлично, но оно мне нахрен не надо, потому что у меня всё сложнее".
    • Указываете точную версию СУБД.
    • Выкладываете полные CREATE TABLE всех таблиц, которые участвуют в процессе. Проконтролировать работоспособность - обязательно. Выкладываете пример данных в виде INSERT INTO. И тоже контроль. Можете сразу создать online fiddle и дать ссылку.
    • Выкладываете требуемый результат для именно этих данных. С подробным пояснением по практически каждой строке результата - "здесь так, потому что ...".

    С таким материалом можно работать, а не развлекаться популярным "тут играем, тут не играем, а тут рыбку заворачивали..".