SQL использовать значение столбца в качестве ключевого слова в строке запроса - PullRequest
0 голосов
/ 19 июля 2011

Хорошо, вот пример запроса:

SELECT DISTINCT id, amount FROM tbl_recurring_payment AS t 
WHERE ADDDATE(t.start_date,  INTERVAL (t.period) UPPER(t.unit)) = CURDATE());

Обсуждаемая область - UPPER (t.unit), где я хочу, чтобы этот expr рассматривался как ключевое слово mysql (возможные значения этого столбца: день, неделя, месяц, год). Выдает ошибку, поскольку не может использовать выражение в качестве ключевого слова. Могу ли я что-нибудь сделать, чтобы заставить это работать, или я должен просто добавить проверку для единицы и жестко закодировать ключевое слово для каждого возможного значения единицы?

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Мне просто нужно знать, возможно ли использовать значение столбца в качестве ключевого слова в строке запроса

NO

0 голосов
/ 19 июля 2011

На первый взгляд, я думаю, что я подхожу к этому с CASE утверждением:

SELECT    -- Is the DISTINCT really necessary???
    id,
    amount
FROM
    tbl_recurring_payment AS T
WHERE
    CASE t.unit
        WHEN 'YEAR' THEN ADDDATE(t.start_date, INTERVAL t.period YEAR)
        ...
    END = CURDATE()

Возможно, вы сможете немного упростить код (для удобства чтения, а не производительности), используя синтаксис INTERVAL без ADDDATE, но я недостаточно использую MySQL, чтобы знать, возможно ли это. (...t.start_date + CASE t.unit WHEN 'YEAR' THEN INTERVAL t.period YEAR...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...