Скажем, у меня есть таблица в SQL-базе данных, какSQL, используя резервный столбец для матча
name age shoesize
---------------------
tom 20 NULL
dick NULL 4
harry 30 5
и я хочу оператор SQL, выбирающий имена, которые имеют возраст == X, или как запасной вариант, если нет такого имена существуют, используйте те, у которых размер обуви == Y. Другими словами, в этой таблице для X = 20, Y = 4 я должен получить только «tom», тогда как для X = 25, Y = 4, я должен получить только ' Дик'. Я не могу этого сделать с
SELECT name FROM table WHERE age = 20 OR shoe size = 4;
потому что это выберет и тома, и член. Я в настоящее время использую
SELECT COALESCE ((SELECT name FROM tab WHERE age = 20),(SELECT name FROM tab WHERE shoesize = 4));
но есть ли более аккуратный способ? Также использование coalesce, как это, не позволяет мне получить всю строку - то есть я не могу использовать SELECT * FROM tab
, я могу выбрать только одно имя.
Пометьте свой вопрос в базе данных, которую вы используете. –
Это, как мне кажется, общий вопрос SQL. Я переключаюсь между sqlite, mySQL и Postgres - хотел бы, чтобы он работал во всех из них – user2667066
Я не понимаю, почему X = 20, Y = 4 должен возвращать только «tom», когда «dick» имеет возраст NULL. Вы говорите, что если вы найдете хотя бы одно совпадение с первым условием, вы не хотите проверять второе условие? –