Nano Hash - криптовалюты, майнинг, программирование

Найти отдельные строки на основе комбинации двух столбцов

У меня возникли проблемы с поиском хорошего решения проблемы в SQL.

Скажем, у меня есть такая таблица:

ID    | A   |   A
--------------------
4427  | 2   |   3
4427  | 3   |   2
4427  | 3   |   5
4427  | 5   |   3
4427  | 1   |   3
4427  | 2   |   5
4427  | 3   |   1

Теперь я хочу найти строки с уникальной комбинацией ID и A. Под этим я подразумеваю, что хочу видеть только строки, в которых комбинация A(1) и A(2) существует только один раз. Например, первые две строки в таблице «одинаковы», поскольку комбинация 2 и 3 такая же, как 3 и 2.

Ожидаемый результат на мой вопрос:

ID    | A   |   A
--------------------
4427  | 2   |   3
4427  | 3   |   5
4427  | 1   |   3
4427  | 2   |   5

Я использую SQL Server 2008.


  • Почему вы выбираете (2,3) вместо (3,2)? 03.11.2014
  • @JoeTaras -› Для меня не имеет значения, будет ли это (2,3) или (3,2). 03.11.2014

Ответы:


1

Если я правильно понимаю, это был бы простой «отдельный» запрос, если бы у вас ВСЕГДА был ColA со значением меньше, чем ColB. Учитывая это, вы можете использовать оператор case для обработки этого в сочетании с отдельным оператором.

Попробуй это.

Select  Distinct
        ID,
        Case When ColA < ColB Then ColA Else ColB End,
        Case When ColA < ColB Then ColB Else ColA End
From    YourTableHere
03.11.2014
  • Таблица является самообъединяемой, поэтому комбинация всегда будет существовать в обоих столбцах. Это работает как шарм. 03.11.2014
  • Я ничего не знаю о вашем процессе (общая цель), но можно ли изменить код самостоятельного соединения, чтобы он выглядел примерно так... Таблица как X Присоединиться к таблице как Y On X.Id = Y.Id и X. ColA ‹ Y.ColA 03.11.2014
  • Да, это тоже отлично работает - на самом деле более простое решение, спасибо. Это в первую очередь одноразовая вещь, но у меня было слишком много строк, чтобы пройти, если бы мне пришлось делать это вручную. 03.11.2014

  • 2

    Один из способов сделать это. К вашему сведению, порядок выходных данных A1/A2 может отличаться от исходного значения. Если вас не волнует порядок, вы можете попробовать это.

    WITH cte AS (
      SELECT ID,A1 AS A, ROW_NUMBER() OVER (ORDER BY A1,A2) AS rn FROM Table1
    UNION ALL
      SELECT ID,A2 AS A, ROW_NUMBER() OVER (ORDER BY A1,A2) AS rn FROM Table1
    )
    SELECT DISTINCT ID, MIN(A) AS A1, MAX(A) AS A2
    FROM cte
    GROUP BY ID, rn
    

    скрипт SQL

    03.11.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..