2010-07-20 33 views
37

我只是想知道什麼樣的mysql命令我可以在PHP中執行,將選擇所有項目從一個表,其中columna不等於x和columnb不等於x選擇從哪裏字段不等於Myspp

喜歡的東西:select something from table where columna does not equal x and columnb does not equal x

任何想法?

回答

60

的關鍵是SQL查詢,您將設置爲一個字符串:

$sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'"; 

注意,有很多的方法來指定NOT。另外一個作品一樣好是:

$sqlquery = "SELECT field1, field2 FROM table WHERE columnA != 'x' AND columbB != 'y'"; 

下面是如何使用它的一個完整的例子:

$link = mysql_connect($dbHost,$dbUser,$dbPass) or die("Unable to connect to database"); 
mysql_select_db("$dbName") or die("Unable to select database $dbName"); 
$sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'"; 
$result=mysql_query($sqlquery); 

while ($row = mysql_fetch_assoc($result) { 
//do stuff 
} 

你可以做任何你想做的上述while循環中。訪問表中的每個字段作爲$row array的元素,這意味着$row['field1']將爲您提供當前行上的值field1$row['field2']將爲您提供field2的值。

請注意,如果列可能有NULL值,那麼將不會使用上述任一語法找到這些值。您將需要添加條款,包括NULL值:

$sqlquery = "SELECT field1, field2 FROM table WHERE (NOT columnA = 'x' OR columnA IS NULL) AND (NOT columbB = 'y' OR columnB IS NULL)"; 
+4

很高興提供幫助。我開始了與代碼塊作爲一個例子...然後我編輯像10倍,我一直只保存到想「等一下,我可以補充一點,以使其成爲更清晰」 – 2010-07-20 03:21:22

+0

這些都不似乎工作如果列的默認值是'NULL' – SpYk3HH 2014-04-30 15:53:58

+0

@ SpYk3HH好點。我會解決這個問題。 – 2014-07-10 14:08:49

-1

您還可以使用

select * from tablename where column1 ='a' and column2!='b'; 

1
select * from table where fiels1 NOT LIKE 'x' AND field2 NOT LIKE 'y' 

//這項工作在不區分大小寫的方式

0
$sqlquery = "SELECT field1, field2 FROM table WHERE columnA <> 'x' AND columbB <> 'y'"; 

我建議使用鑽石運算符(<>)來支持!=,因爲第一個是有效的SQL,第二個是MySQL的加法。

6

您可以像使用

NOT columnA = 'x' 

或者

columnA != 'x' 

或者

columnA <> 'x' 

而像Jeffly烘烤的查詢中,包括空值,你沒有寫像

(NOT columnA = 'x' OR columnA IS NULL) 

你可以把它簡單的

Not columnA <=> 'x' 

< =>是空安全等於運營商,其中包括來自即使空值結果。

0

或者也可以插入支架內聲明。

SELECT * FROM tablename WHERE NOT (columnA = 'x')