我有两列与音乐相关数据库的情绪相对应 - 情绪,情绪2
我想返回所有可能的行而不重复。在这个网站上遇到了类似的答案,我已经调整了如下的查询,但仍然没有得到任何可见的结果。
$resultMOODinner = mysql_query
("SELECT (var) FROM (
SELECT Mood AS var FROM Music
UNION
SELECT Mood2 AS var FROM Music
)
AS Temp ");
while ($rowMOOD2 = mysql_fetch_array($resultMOODinner, MYSQL_ASSOC))
{
$Mood = $rowMOOD2["Temp"];
echo "$Mood";
}
答案 0 :(得分:0)
根据其他地方的评论,最简单的解决方案是使用SELECT DISTINCT:
SELECT DISTINCT var
FROM (
SELECT Mood AS var FROM Music
UNION SELECT Mood2 AS var FROM Music
) as temp
然而,这必须对数据库进行两次拖网 - 但数据库的全部意义在于它管理大量数据 - 您应该很少一次查看所有数据 - 实际上您应该积极寻求其他解决方案。但是现在无视这一点,更强大的高效解决方案是只读取一次数据:
SELECT DISTINCT IF (mult.val='A', mood, mood2)
FROM music,
(SELECT 'A' UNION SELECT 'B') mult
BTW你的PHP代码正在选择一个不在你的查询中的属性 - 临时别名应用于子查询。)
但是根据您提供的信息,可以得出的唯一可能结论是您的数据库未规范化 - 因此正确解决方案是规范化您的数据库。
答案 1 :(得分:-1)
使用DISTINCT:
SELECT DISTINCT Mood AS var FROM Music
SELECT DISTINCT Mood2 AS var FROM Music