例如,如果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行。
由于
答案 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,您可能需要考虑会发生什么。