Выбор данных только в том случае, если существуют связанные данные
Привет,
У меня есть следующий запрос, чтобы вернуть массовый запрос "существует" для нескольких записей. То, что я хочу сделать, - это только выбрать u.role и несколько других полей, если имя пользователя существует в разделе "пользователи". Этот метод работает, но он запутан, так как я проверяю, существует ли имя пользователя для каждого столбца, который я выбираю. Есть ли более компактный способ сказать;
Если имя пользователя существует, верните столбец role, x, y, z и т. д.
В противном случае верните NULL для столбца role, x, y, z и т. д.
CREATE TEMPORARY TABLE _users(username varchar(256)); INSERT INTO _users VALUES('testuser1', 'testuser2'); SELECT _u.username, CASE WHEN ISNULL(u.username) = 1 THEN 0 ELSE 1 END 'exists', CASE WHEN ISNULL(u.username) = 1 THEN u.role ELSE NULL END 'role' FROM _users _u LEFT JOIN users u ON u.username = _u.username; DROP TABLE _users
Что я уже пробовал:
-------------------------------------------------------------------------------
[no name]
Я уже говорил, что запрос работает отлично. Я использую MySQL, который имеет только один параметр для ISNULL.
Richard Deeming
Где в вашем вопросе Вы упомянули MySQL?
Вы могли бы, по крайней мере, использовать тег "MySQL", а не общий тег "SQL". MySQL имеет так много отличий от обычного SQL, что это может быть и другой язык.