我已经打破了我的头几天了,找不到办法实现我想做的事情(我在网上搜索过!)。我尝试过WHERE子句,嵌套的IF和CASE函数都无济于事。
我有一张包含模型信息的表格。该信息包括一个名为“country”的字段,这是他们实际居住的地方。还有一个名为“hideme”的字段,如果他们不想出现在该国家/地区的人的搜索结果中,则可以是1,否则为0。我正在使用MaxMind的GeoIP DB获取访问者的国家。
所以这就是我想要的,更清楚地说:如果访客如果从美国说出来,并且该模型来自美国并且“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];
}
先谢谢你们!
答案 0 :(得分:3)
我想你想要一个WHERE子句
SELECT user
FROM models
WHERE NOT (country = '$country_id' AND hideme)
答案 1 :(得分:1)
也许我没有理解你的问题,但不仅仅是:
SELECT user FROM models WHERE country = '$country_id' AND hideme = 0
答案 2 :(得分:1)
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的模型,因此您可以选择改变地址:
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. */
)
后者有点难以阅读,但与文字描述更紧密地匹配。结果是相同的,假设您没有任何国家或hideme值为NULL的记录。