gpt4 book ai didi

MySQL仅在语句被验证时才执行查询

转载 作者:行者123 更新时间:2023-11-29 21:30:57 25 4
gpt4 key购买 nike

我的这个查询运行良好:

SELECT
Disciplina,
Categoria,
IF (MAX(`London 2012`) > 0, 'yes', 'no') AS 'London 2012',
IF (MAX(`Beijing 2008`) > 0, 'yes', 'no') AS 'Beijing 2008',
IF (MAX(`Athens 2004`) > 0, 'yes', 'no') AS 'Athens 2004',
IF (MAX(`Sydney 2000`) > 0, 'yes', 'no') AS 'Sydney 2000',
IF (MAX(`Atlanta 1996`) > 0, 'yes', 'no') AS 'Atlanta 1996',
IF (MAX(`Barcelona 1992`) > 0, 'yes', 'no') AS 'Barcelona 1992',
IF (MAX(`Seoul 1988`) > 0, 'yes', 'no') AS 'Seoul 1988',
IF (MAX(`Los Angeles 1984`) > 0, 'yes', 'no') AS 'Los Angeles 1984',
IF (MAX(`Moscow 1980`) > 0, 'yes', 'no') AS 'Moscow 1980',
IF (MAX(`Montreal 1976`) > 0, 'yes', 'no') AS 'Montreal 1976',
IF (MAX(`Munich 1972`) > 0, 'yes', 'no') AS 'Munich 1972',
IF (MAX(`Mexico 1968`) > 0, 'yes', 'no') AS 'Mexico 1968',
IF (MAX(`Tokyo 1964`) > 0, 'yes', 'no') AS 'Tokyo 1964',
IF (MAX(`Rome 1960`) > 0, 'yes', 'no') AS 'Rome 1960',
IF (MAX(`Melbourne / Stockholm 1956`) > 0, 'yes', 'no') AS 'Melbourne / Stockholm 1956',
IF (MAX(`Helsinki 1952`) > 0, 'yes', 'no') AS 'Helsinki 1952',
IF (MAX(`London 1948`) > 0, 'yes', 'no') AS 'London 1948',
IF (MAX(`Berlin 1936`) > 0, 'yes', 'no') AS 'Berlin 1936',
IF (MAX(`Los Angeles 1932`) > 0, 'yes', 'no') AS 'Los Angeles 1932',
IF (MAX(`Amsterdam 1928`) > 0, 'yes', 'no') AS 'Amsterdam 1928',
IF (MAX(`Paris 1924`) > 0, 'yes', 'no') AS 'Paris 1924',
IF (MAX(`Antwerp 1920`) > 0, 'yes', 'no') AS 'Antwerp 1920',
IF (MAX(`Stockholm 1912`) > 0, 'yes', 'no') AS 'Stockholm 1912',
IF (MAX(`London 1908`) > 0, 'yes', 'no') AS 'London 1908',
IF (MAX(`St Louis 1904`) > 0, 'yes', 'no') AS 'St Louis 1904',
IF (MAX(`Paris 1900`) > 0, 'yes', 'no') AS 'Paris 1900',
IF (MAX(`Athens 1896`) > 0, 'yes', 'no') AS 'Athens 1896'
FROM
(
SELECT
Disciplina,
Categoria,
IF (Olimpiade = 'London 2012', 1, 0) AS 'London 2012',
IF (Olimpiade = 'Beijing 2008', 1, 0) AS 'Beijing 2008',
IF (Olimpiade = 'Athens 2004', 1, 0) AS 'Athens 2004',
IF (Olimpiade = 'Sydney 2000', 1, 0) AS 'Sydney 2000',
IF (Olimpiade = 'Atlanta 1996', 1, 0) AS 'Atlanta 1996',
IF (Olimpiade = 'Barcelona 1992', 1, 0) AS 'Barcelona 1992',
IF (Olimpiade = 'Seoul 1988', 1, 0) AS 'Seoul 1988',
IF (Olimpiade = 'Los Angeles 1984', 1, 0) AS 'Los Angeles 1984',
IF (Olimpiade = 'Moscow 1980', 1, 0) AS 'Moscow 1980',
IF (Olimpiade = 'Montreal 1976', 1, 0) AS 'Montreal 1976',
IF (Olimpiade = 'Munich 1972', 1, 0) AS 'Munich 1972',
IF (Olimpiade = 'Mexico 1968', 1, 0) AS 'Mexico 1968',
IF (Olimpiade = 'Tokyo 1964', 1, 0) AS 'Tokyo 1964',
IF (Olimpiade = 'Rome 1960', 1, 0) AS 'Rome 1960',
IF (Olimpiade = 'Melbourne / Stockholm 1956', 1, 0) AS 'Melbourne / Stockholm 1956',
IF (Olimpiade = 'Helsinki 1952', 1, 0) AS 'Helsinki 1952',
IF (Olimpiade = 'London 1948', 1, 0) AS 'London 1948',
IF (Olimpiade = 'Berlin 1936', 1, 0) AS 'Berlin 1936',
IF (Olimpiade = 'Los Angeles 1932', 1, 0) AS 'Los Angeles 1932',
IF (Olimpiade = 'Amsterdam 1928', 1, 0) AS 'Amsterdam 1928',
IF (Olimpiade = 'Paris 1924', 1, 0) AS 'Paris 1924',
IF (Olimpiade = 'Antwerp 1920', 1, 0) AS 'Antwerp 1920',
IF (Olimpiade = 'Stockholm 1912', 1, 0) AS 'Stockholm 1912',
IF (Olimpiade = 'London 1908', 1, 0) AS 'London 1908',
IF (Olimpiade = 'St Louis 1904', 1, 0) AS 'St Louis 1904',
IF (Olimpiade = 'Paris 1900', 1, 0) AS 'Paris 1900',
IF (Olimpiade = 'Athens 1896', 1, 0) AS 'Athens 1896'
FROM SummerTotalMedals
WHERE Sport='Athletics'
) AS Games
GROUP BY Disciplina, Categoria
ORDER BY Disciplina ASC, Categoria ASC

我想从这个单一查询中获取两种类型的查询。

1) 第一个获得相同信息但仅针对 2012 年伦敦奥运会的 Disciplina ='yes' 的人

2) 第二个在 2012 年伦敦奥运会上获得有关纪律 =“否”的相同信息。

我可以这样做吗?我自己尝试过,但效果不佳。

最佳答案

我不是在谈论这个数据库设计......;)

为什么不在内部查询中添加一个过滤器,如下所示:

1) 第一个获得相同信息但仅针对 2012 年伦敦奥运会的 Disciplina ='yes' 的人

SELECT
Disciplina,
Categoria,
IF (MAX(`London 2012`) > 0, 'yes', 'no') AS 'London 2012',
IF (MAX(`Beijing 2008`) > 0, 'yes', 'no') AS 'Beijing 2008',
IF (MAX(`Athens 2004`) > 0, 'yes', 'no') AS 'Athens 2004',
IF (MAX(`Sydney 2000`) > 0, 'yes', 'no') AS 'Sydney 2000',
IF (MAX(`Atlanta 1996`) > 0, 'yes', 'no') AS 'Atlanta 1996',
IF (MAX(`Barcelona 1992`) > 0, 'yes', 'no') AS 'Barcelona 1992',
IF (MAX(`Seoul 1988`) > 0, 'yes', 'no') AS 'Seoul 1988',
IF (MAX(`Los Angeles 1984`) > 0, 'yes', 'no') AS 'Los Angeles 1984',
IF (MAX(`Moscow 1980`) > 0, 'yes', 'no') AS 'Moscow 1980',
IF (MAX(`Montreal 1976`) > 0, 'yes', 'no') AS 'Montreal 1976',
IF (MAX(`Munich 1972`) > 0, 'yes', 'no') AS 'Munich 1972',
IF (MAX(`Mexico 1968`) > 0, 'yes', 'no') AS 'Mexico 1968',
IF (MAX(`Tokyo 1964`) > 0, 'yes', 'no') AS 'Tokyo 1964',
IF (MAX(`Rome 1960`) > 0, 'yes', 'no') AS 'Rome 1960',
IF (MAX(`Melbourne / Stockholm 1956`) > 0, 'yes', 'no') AS 'Melbourne / Stockholm 1956',
IF (MAX(`Helsinki 1952`) > 0, 'yes', 'no') AS 'Helsinki 1952',
IF (MAX(`London 1948`) > 0, 'yes', 'no') AS 'London 1948',
IF (MAX(`Berlin 1936`) > 0, 'yes', 'no') AS 'Berlin 1936',
IF (MAX(`Los Angeles 1932`) > 0, 'yes', 'no') AS 'Los Angeles 1932',
IF (MAX(`Amsterdam 1928`) > 0, 'yes', 'no') AS 'Amsterdam 1928',
IF (MAX(`Paris 1924`) > 0, 'yes', 'no') AS 'Paris 1924',
IF (MAX(`Antwerp 1920`) > 0, 'yes', 'no') AS 'Antwerp 1920',
IF (MAX(`Stockholm 1912`) > 0, 'yes', 'no') AS 'Stockholm 1912',
IF (MAX(`London 1908`) > 0, 'yes', 'no') AS 'London 1908',
IF (MAX(`St Louis 1904`) > 0, 'yes', 'no') AS 'St Louis 1904',
IF (MAX(`Paris 1900`) > 0, 'yes', 'no') AS 'Paris 1900',
IF (MAX(`Athens 1896`) > 0, 'yes', 'no') AS 'Athens 1896'
FROM
(
SELECT
Disciplina,
Categoria,
IF (Olimpiade = 'London 2012', 1, 0) AS 'London 2012',
IF (Olimpiade = 'Beijing 2008', 1, 0) AS 'Beijing 2008',
IF (Olimpiade = 'Athens 2004', 1, 0) AS 'Athens 2004',
IF (Olimpiade = 'Sydney 2000', 1, 0) AS 'Sydney 2000',
IF (Olimpiade = 'Atlanta 1996', 1, 0) AS 'Atlanta 1996',
IF (Olimpiade = 'Barcelona 1992', 1, 0) AS 'Barcelona 1992',
IF (Olimpiade = 'Seoul 1988', 1, 0) AS 'Seoul 1988',
IF (Olimpiade = 'Los Angeles 1984', 1, 0) AS 'Los Angeles 1984',
IF (Olimpiade = 'Moscow 1980', 1, 0) AS 'Moscow 1980',
IF (Olimpiade = 'Montreal 1976', 1, 0) AS 'Montreal 1976',
IF (Olimpiade = 'Munich 1972', 1, 0) AS 'Munich 1972',
IF (Olimpiade = 'Mexico 1968', 1, 0) AS 'Mexico 1968',
IF (Olimpiade = 'Tokyo 1964', 1, 0) AS 'Tokyo 1964',
IF (Olimpiade = 'Rome 1960', 1, 0) AS 'Rome 1960',
IF (Olimpiade = 'Melbourne / Stockholm 1956', 1, 0) AS 'Melbourne / Stockholm 1956',
IF (Olimpiade = 'Helsinki 1952', 1, 0) AS 'Helsinki 1952',
IF (Olimpiade = 'London 1948', 1, 0) AS 'London 1948',
IF (Olimpiade = 'Berlin 1936', 1, 0) AS 'Berlin 1936',
IF (Olimpiade = 'Los Angeles 1932', 1, 0) AS 'Los Angeles 1932',
IF (Olimpiade = 'Amsterdam 1928', 1, 0) AS 'Amsterdam 1928',
IF (Olimpiade = 'Paris 1924', 1, 0) AS 'Paris 1924',
IF (Olimpiade = 'Antwerp 1920', 1, 0) AS 'Antwerp 1920',
IF (Olimpiade = 'Stockholm 1912', 1, 0) AS 'Stockholm 1912',
IF (Olimpiade = 'London 1908', 1, 0) AS 'London 1908',
IF (Olimpiade = 'St Louis 1904', 1, 0) AS 'St Louis 1904',
IF (Olimpiade = 'Paris 1900', 1, 0) AS 'Paris 1900',
IF (Olimpiade = 'Athens 1896', 1, 0) AS 'Athens 1896'
FROM SummerTotalMedals
WHERE Sport='Athletics'
AND Olimpiade = 'London 2012' AND Disciplina='yes'
) AS Games
GROUP BY Disciplina, Categoria
ORDER BY Disciplina ASC, Categoria ASC

第二个,你只需要更改 Disciplina='no' 即可。这就是你所期待的吗?我没明白这个问题吗?

关于MySQL仅在语句被验证时才执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35266149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com