DROP PROCEDURE IF EXISTS get_artist;
DELIMITER ;;
CREATE PROCEDURE get_artist(IN artist_id integer(11), IN show_links integer(1))
BEGIN
CASE WHEN show_links=1
THEN
SELECT *
FROM artist
where id = artist_id;
ELSE
SELECT *
FROM artist
LEFT JOIN artist_social_links ON artist_social_links.artist_id = artist_id
where id = artist_id ;
END CASE;
END;;
DELIMITER ;
CALL get_artist(196796, 1);
CREATE TABLE test (entity INT, -- некая строка в структуре
position INT); -- её позиция при сортировке
UPDATE test
SET position := CASE WHEN position = @from
THEN @to
ELSE position + SIGN(@from - @to)
END
WHERE position BETWEEN LEAST(@from, @to) AND GREATEST(@from, @to);
Погуглил, вроде как все советуют такое решение:
Есть большая БД на 50гб, и стоит задача удалить дубли в одной из таблиц.
[skipped]
Но проблема в том что в других таблицах есть связи через внешние ключи с моей основной.
Объясните мне почему программист должен гуглить на английском?
что если я запущу программу, а нужной таблицы не будет?
дошёл до такой функции
SELECT TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
-- WHERE TABLE_NAME = 'my_table_name'
;
что если в другой схеме уже есть таблица с таким названием...
Мне нужно загнать всё это дело в MySQL. Какие наиболее оптимальные способы для этого есть?
SELECT *
FROM email
WHEN public.email.campaign_id IS NULL
SELECT *, 'false' AS campaign_id_bool
FROM email
WHEN public.email.campaign_id IS NULL
нужно, чтоб были значения и тру и фолс в зависимости от того пустое ли поле
SELECT *,
CASE WHEN public.email.campaign_id IS NULL
THEN 'false'
ELSE 'true'
END AS campaign_id_bool
FROM email
SELECT *,
ELT(1 + public.email.campaign_id IS NULL, 'true', 'false' ) AS campaign_id_bool
FROM email
WITH
some_data AS ( SELECT ARRAY(1,2,3) AS some_value )
SELECT *
FROM some_table
CROSS JOIN some_data
WHERE some_table.some_field NOT IN some_data.some_value
SELECT a.login
FROM account a
JOIN transactions t ON a.id = t.account_id
JOIN game g ON t.game_id = g.id
JOIN company c ON c.id = g.Developer
GROUP BY a.login
HAVING !SUM( c.country != 'USA' OR YEAR(g.Release_date) MOD 2 )
мне надо чтоб по артикулу, он определил product_id из другой таблицы и заменил related_sku ( артикул в даный момент) на product_id из другой таблицы.
ALTER TABLE related_products ADD COLUMN related_id INT;
UPDATE related_products p
JOIN another_table a ON p.related_sku = a.sku
SET p.related_id = a.product_id
WHERE p.related_id IS NULL