MYSQL Выберите Statment with Modification для кортежа значений - PullRequest
0 голосов
/ 07 мая 2010

У меня есть следующая таблица:

bar_id, bar_name, subscription_id_fk, sub_name

например:

1, Hard Rock, 2, Gold
2, TGIF, 1, Free

Теперь мне нужно и SQL для извлечения этой таблицы, но где sub_name = Gold, мне нужно удвоить subscription_id_fk.

Можете ли вы помочь

Edit: Мне нужно, чтобы это значение изменялось только в результате SQL-оценки

Ответы [ 5 ]

2 голосов
/ 07 мая 2010
SELECT IF(sub_name = 'Gold', subscription_id_fk * 2, subscription_id_fk) as fk 
FROM my_table 
0 голосов
/ 07 мая 2010

Хорошо, если вам нужны все строки, но только «золотые» с двойными ключами, вы можете использовать SELECT GREATEST(t.subscription_id_fk, IFNULL(t2.subscription_id_fk,0)) AS subscription_id_fk, bar_id, bar_name, sub_name FROM table AS t LEFT JOIN ( SELECT (subscription_id_fk * 2) AS subscription_id_fk, id FROM table t2 WHERE sub_name ="Gold") AS t2 ON (t.id = t2.id)

0 голосов
/ 07 мая 2010

Это может вам помочь.

Итак, по ссылке, которую вы пытаетесь,
select subscription_id_fk * 2 from table where sub_name = 'Gold'

Я практически не пробовал. Я просто нахожу это в интернете. Итак, попробуйте.

0 голосов
/ 07 мая 2010

Вы ищете что-то простое, как

SELECT (subscription_id_fk * 2) as double_sif
FROM table
WHERE sub_name = 'Gold'

Когда вы приняли этот ответ, несколько комментариев

  • Операторы SELECT никогда ничего не изменяют в базе данных, для этого вам нужны UPDATE, INSERT или DELETE (хотя бы прочитайте wikipedia статья по SQL)
  • имя поля предполагает, что это внешний ключ для другой таблицы, и хотя это возможно, обычно умножение ключей не имеет никакого смысла
0 голосов
/ 07 мая 2010

Возможно, я не понимаю вопроса, но для меня это выглядит как простое обновление:

UPDATE table SET subscription_id_fk = (subscription_id_fk * 2) WHERE sub_name = "Gold"

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