几天来,我一直在绞尽脑汁,找不到实现目标的方法(我在网上到处搜索!).I已尝试使用WHERE子句,嵌套的IF和CASE函数无效。
我有一张表格,上面有模特的资料。这些信息包括一个名为“country”的字段,这是他们实际居住的地方。还有一个名为“hideme”的字段,如果他们不想出现在来自该国的人员的搜索结果中,则该字段可以是1,否则为0。我要用MaxMind的GeoIP数据库访问访问国。
所以这就是我想要的,更明确地说:如果访客如果来自我们,那么模型是来自美国并且“hideme”字段是1,那么她不应该出现在结果上。我对PHP或获取国家代码没有问题,只需要正确的SELECT语句。
这是我目前的代码:

$select = "SELECT user
       IF (country != '$country_id', country,
           IF (hideme = 1, 1, 0))
       FROM models";

$result = mysql_query($select);

while ($row = mysql_fetch_array($result))
{
echo $row[user];
}

提前谢谢你们!

最佳答案

SELECT
  user
FROM
  models
WHERE
  country != '$country_id' /* Those from another country */
  OR hideme = 0 /* .. or allowed to view, regardless of country */

这将返回来自其他国家或hideme设置为0的模型。这与返回模型的含义相同,但来自同一国家且hideme设置为1的模型除外,因此您也可以将where更改为:
SELECT
  user
FROM
  models
WHERE
  NOT ( /* Except ... */
    country = '$country_id' /* .. those that are from the same country */
    AND hideme = 1 /* .. and having hideme set to 1. */
  )

后者更难阅读,但与文本描述更为匹配。如果没有country或hideme值为空的记录,则结果相同。

09-28 10:35