如何根据值更改mysql输出

时间:2012-05-22 20:10:29

标签: mysql

例如,如果queue_watch显示为0,我希望实际的mysql输出说“不”,否则说“是”。改变计划不是一种选择。

SELECT user.user_name, queue.queue_name, queue_access.queue_access,
    queue_access.queue_watch
FROM queue_access
INNER JOIN user ON user.user_id = queue_access.user_id
INNER JOIN queue ON queue.queue_id = queue_access.queue_id
WHERE queue_access <> '' OR queue_watch = 1
ORDER BY user_name;

SQL适用于我需要的东西,但我想知道是否可以使用SQL而不是PHP来更改输出。此外,是否可以将一行中的所有queue_names分组到每个user_name,因此我不必返回153行。

由于

2 个答案:

答案 0 :(得分:8)

这不是一个头脑。我觉得最好在查询中完成。

试试这个 -

SELECT user.user_name, queue.queue_name, queue_access.queue_access,
       IF(queue_access.queue_watch = 0, 'No', 'Yes')
FROM queue_access
INNER JOIN user ON user.user_id = queue_access.user_id
INNER JOIN queue ON queue.queue_id = queue_access.queue_id
WHERE queue_access <> '' OR queue_watch = 1
ORDER BY user_name;

答案 1 :(得分:5)

您可以使用标准CASE表达式。编写CASE表达式的方法略有不同。

简单的案例表达:

SELECT
    CASE queue_access.queue_watch
        WHEN 0 THEN 'No'
        ELSE 'Yes'
    END AS your_alias,
    ...

搜索案例表达:

SELECT
    CASE WHEN queue_access.queue_watch = 0 THEN 'No' ELSE 'Yes' END AS your_alias,
    ...

或者您可以使用MySQL特定的IF构造:

SELECT
    IF(queue_access.queue_watch, 'Yes', 'No') AS your_alias,
    ...

如果您的值不是0或1,您可能需要考虑会发生什么。