используйте sum()
вместо count()
Попробуйте ниже:
SELECT ccc_news . * ,
SUM(if(ccc_news_comments.id = 'approved', 1, 0)) AS comments
FROM ccc_news
LEFT JOIN ccc_news_comments ON ccc_news_comments.news_id = ccc_news.news_id
WHERE `ccc_news`.`category` = 'news_layer2'
AND `ccc_news`.`status` = 'Active'
GROUP BY ccc_news.news_id
ORDER BY ccc_news.set_order ASC
LIMIT 20
Хитрость заключается в том, чтобы добавить переменные среды в файл sudoers
с помощью команды sudo visudo
и добавить эти строки:
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
взято из ArchLinux wiki .
Для Ubuntu 14 вам нужно указать в отдельных строках, поскольку он возвращает ошибки для строк с несколькими переменными:
Defaults env_keep += "http_proxy"
Defaults env_keep += "https_proxy"
Defaults env_keep += "HTTP_PROXY"
Defaults env_keep += "HTTPS_PROXY"
Для отдельных переменных, которые вы хотите сделать доступными на одном уровне, вы можете сделать это частью команды.
sudo http_proxy=$http_proxy wget "http://stackoverflow.com"
package
под некоторым myPath, добавленным в PATH
в файле .bashrc
(с export
clausule). Тогда sudo PATH=$PATH which package
найдет правильный ответ, в отличие от sudo which package
. Однако sudo PATH=$PATH package
не идет дальше sudo package
(файл не найден). С другой стороны, запуск простой package
из оболочки, вызванной с помощью sudo bash
, сохраняет расширенный путь и дает права package
sudo (два голубка с одним камнем). Таким образом, ответ действительно зависит от того, какие команды вы запускаете
– XavierStuvw
5 January 2017 в 19:16
Вы также можете комбинировать два выражения env_keep
в ответе Ахмеда Асвани в одном утверждении:
Defaults env_keep += "http_proxy https_proxy"
Вы также должны рассмотреть указание env_keep
для только одна команда:
Defaults!/bin/[your_command] env_keep += "http_proxy https_proxy"
Сначала вам нужно export HTTP_PROXY
. Во-вторых, вы должны внимательно прочитать man sudo
и обратить внимание на флаг -E
. Это работает:
$ export HTTP_PROXY=foof
$ sudo -E bash -c 'echo $HTTP_PROXY'
Вот цитата из справочной страницы:
-E, --preserve-env
Indicates to the security policy that the user wishes to preserve their
existing environment variables. The security policy may return an error
if the user does not have permission to preserve the environment.
LC_*
. Так что просто сделайте export LOL_FOO=$LC_FOO
и используйте LOL_FOO
.
– luckydonald
4 November 2016 в 21:39
PATH
в файле .bashrc
- скажем, export PATH=myPath:$PATH
. Если я набираю sudo -E bash -c 'echo $PATH'
, то PATH
не содержит myPath, потому что sudo
уже отключил локальное значение PATH
перед вызовом bash
. Скорее, я нашел ответ ниже stackoverflow.com/a/33183620/5459638 эффективным, то есть sudo PATH=$PATH command
– XavierStuvw
5 January 2017 в 18:42
sudo -E
- это верный способ adhoc получить тот же эффект для одноразового, хотя – sehe 26 December 2011 в 16:55etc/sudoers
напрямую. Вместо этого используйте командуvisudo
, синтаксис которой проверяет ваши изменения, прежде чем перезаписывать файлsudoers
. Таким образом, вы не блокируете себя, если ошибаетесь при редактировании. – Henning 15 November 2013 в 10:37