如何根据值更改mysql输出

Jon*_*aub 5 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;
Run Code Online (Sandbox Code Playgroud)

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

谢谢

JHS*_*JHS 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;
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 5

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

简单的案例表达:

SELECT
    CASE queue_access.queue_watch
        WHEN 0 THEN 'No'
        ELSE 'Yes'
    END AS your_alias,
    ...
Run Code Online (Sandbox Code Playgroud)

搜索案例表达:

SELECT
    CASE WHEN queue_access.queue_watch = 0 THEN 'No' ELSE 'Yes' END AS your_alias,
    ...
Run Code Online (Sandbox Code Playgroud)

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

SELECT
    IF(queue_access.queue_watch, 'Yes', 'No') AS your_alias,
    ...
Run Code Online (Sandbox Code Playgroud)

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