Вы запрос:
SELECT *
FROM TableA A
INNER JOIN TableB B
ON A.col5 = B.col5;
имеет правильный синтаксис для объединения. Если есть соответствующие значения, то он вернет его. (Или, конечно, вы можете вызвать это из приложения, и могут быть ошибки либо в коде приложения, либо в соединении с базой данных, но это еще одна проблема.)
Некоторые случаи, когда значения выглядят одинаково, но не являются :
- Оба значения являются поплавками. При распечатке они выглядят одинаково. Но бит в конце значения отличается. НИКОГДА НЕ ИСПОЛЬЗУЙТЕ FLOATS ДЛЯ EQUI-JOIN.
- Одно значение - это число, а другое значение - строка. Преобразование одного из значений приводит к несколько другому значению.
- Одно значение - это дата/время, а другое - строка. Преобразование одного из значений приводит к несколько другому значению.
- Значения представляют собой строки. Они различаются в случае. Вы думаете, что
abc
- это то же самое, что и ABC1
, но SQL этого не делает.
- У вас есть пробелы или другие «скрытые» символы в конце строки.
И еще две причины, по которым я могу думать, но не может быть верно во всех базах данных:
- Одно значение является символ, а другой VARCHAR (или широкие версии из них). Неявные пробелы в конце символа делают их разными.
- Один из них - строка в Юникоде и другая строка ASCII. Два символа выглядят одинаково, но их нет.
. , То, что вы знаете «наверняка», похоже, не является реальностью. Ваш синтаксис правильный для соединения. Если в таблице есть соответствующие значения, отличные от NULL, запрос вернет их. –
Plz, обеспечите скрипку, доказывая свои слова – user4035
можно ли получить данные? – Tadgh