У меня есть две таблицы MySQL.То, что я пытаюсь сделать, это экспортировать информацию, где Значение 1 на 1 меньше, чем Значение 2, И где ID_1 не имеет своих Значений 1 и Значений 2 равных.
Примечание:
- Поля Значения 1 и 2 являются просто целыми числами.
- Каждый отдельный ID_A имеет одно и то же Значение_2
- Если имеется два значения_1которые на единицу меньше, чем Value_2, посмотрите на Value_3 и выберите ту, которая выше
- Причина, по которой у меня здесь две таблицы, заключается в том, что я собираюсь выводить информацию из обеих таблиц
- Мы можем написатьсценарий для этого, но мне нужно сделать это в одной команде для получения бонусных баллов (которые, как объявил мой инструктор, возможны) ... я даже не запустил сценарий для этого, так как на самом деле не знаю, как это сделатьчто ...
tableA
выглядит так:
ID_1 ID_2
A A
A B
B A
B B
C A
C B
C C
tableB
выглядит так:
ID_1 ID_2 Value_1 Value_2 Value_3
A A 2 3 NULL
A B 3 3 NULL
B A 4 5 NULL
B B 7 5 NULL
C A 7 8 98
C B 3 8 NULL
C C 7 8 56
Запрос должен возвращать это:
ID_1 ID_2
B A
C A
Вот то, что у меня есть до сих пор ... И это не возвращает ни одного хита, что меня смущает.Я полагаю, что это предложение AND после первого оператора WHERE, в котором мне нужно исправить
SELECT CONCAT(...)
INTO OUTFILE '/tmp/outfile.tab'
FIELDS TERMINATED BY '\t'
ESCAPED BY ''
FROM tableA
INNER
JOIN tableB
ON tableA.ID_1 = tableB.ID_1
AND tableA.ID_2 = tableB.ID_2
WHERE tableB.Value_1 - 1 = tableB.Value_2
AND tableA.ID_1 !=
( SELECT DISTINCT
ID_1
FROM tableB
WHERE ID_1 = tableA.ID_1
AND Value_1 = Value_2
)
;
Последнее замечание: все команды мы выполняем через putty, в котором мы можем получить доступ к MySQL