MySQL仅在验证语句时执行查询
我的这个查询运行良好:MySQL仅在验证语句时执行查询,mysql,Mysql,我的这个查询运行良好: 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',
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年伦敦奥运会上,第一个获得相同信息但仅限于该学科的人a='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
2) 第二个在2012年伦敦奥运会上获得相同纪律信息的人a='否'
我可以这样做吗?我自己尝试过,但结果很差。我没有说任何关于这个数据库设计的事情……;) 为什么不在内部查询中添加一个过滤器,如下所示: 1) 在2012年伦敦奥运会上,第一个获得相同信息但仅限于该学科的人a='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
第二,你只需要改变规则。
这就是你所期待的吗?我不明白这个问题吗?只是一个评论——把奥运会选手名单列为专栏看起来不是一个好的设计决策。应该是多对多的关系。