Php 当只有一行存在时,从MYSQL中选择

Php 当只有一行存在时,从MYSQL中选择,php,mysql,database,select,Php,Mysql,Database,Select,我有一个mysql查询: SELECT a.full_address FROM games_server AS a JOIN orders_order AS b ON b.server_id = a.id WHERE service_type = 'color' AND status = 'running' ORDER BY RAND()" 它工作得非常好,仅当服务类型为“颜色”时才选择值。 但我需要的是,只有当只有一行service_type=color且没有其他行具有不同serv

我有一个mysql查询:

SELECT a.full_address 
FROM games_server AS a 
JOIN orders_order AS b 
ON b.server_id = a.id 
WHERE service_type = 'color' 
AND status = 'running' ORDER BY RAND()"
它工作得非常好,仅当服务类型为“颜色”时才选择值。 但我需要的是,只有当只有一行service_type=color且没有其他行具有不同service_type值时,它才会选择“full_address”。因为对于一个完整的地址=a,可能有多行。例如,完整地址=a,服务类型=颜色,相同的完整地址=a,服务类型=顶部。在这种情况下,如果有两个,则不能选择。仅当有一行服务类型=颜色时

我希望任何人都能理解我说的话。抱歉,我不能说得更清楚。

试试这个(假设游戏服务器有id):


如果我正确理解了您的问题,那么子查询在这里应该很有用

SELECT a.full_address 
FROM games_server AS a 
JOIN orders_order AS b 
ON b.server_id = a.id 
WHERE service_type in 
        (select service_type 
         from orders_order 
         group by service_type 
         having COUNT(service_type)=1)
AND status = 'running' ORDER BY RAND()

如果您发布一些示例数据和预期输出,将更有助于理解您的问题。谢谢您的建议!但不幸的是,它返回了空白。yupp,很抱歉,忘了添加群组,希望你的游戏主键是服务器的“id”,工作起来很有魅力。你是个救生员!谢谢你,先生
SELECT a.full_address 
FROM games_server AS a 
JOIN orders_order AS b 
ON b.server_id = a.id 
WHERE service_type in 
        (select service_type 
         from orders_order 
         group by service_type 
         having COUNT(service_type)=1)
AND status = 'running' ORDER BY RAND()