2010-07-20 36 views
37

Tôi chỉ tự hỏi loại lệnh mysql nào tôi có thể thực thi trong php để chọn tất cả các mục từ một bảng nào đó mà columna không bằng x và cộtb không bằng xChọn từ trường không bằng Mysql Php

Giống như: select something from table where columna does not equal x and columnb does not equal x

Bất kỳ ý tưởng nào?

Trả lời

60

Điều quan trọng là các truy vấn sql, mà bạn sẽ thiết lập như là một chuỗi:

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

Lưu ý rằng có rất nhiều cách để xác định KHÔNG. Một số khác mà hoạt động giống cũng là:

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

Đây là một ví dụ đầy đủ về cách sử dụng nó:

$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 
} 

Bạn có thể làm bất cứ điều gì bạn muốn trong vòng trên vòng lặp while. Truy cập từng trường của bảng dưới dạng phần tử của $row array có nghĩa là $row['field1'] sẽ cung cấp cho bạn giá trị cho field1 trên hàng hiện tại và $row['field2'] sẽ cung cấp cho bạn giá trị cho field2.

Lưu ý rằng nếu (các) cột có thể có giá trị NULL, những giá trị đó sẽ không được tìm thấy bằng cách sử dụng một trong các cú pháp trên. Bạn sẽ cần phải thêm mệnh đề bao gồm NULL giá trị:

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

Rất vui được trợ giúp. Tôi bắt đầu với khối mã như một ví dụ ... sau đó tôi đã chỉnh sửa 10 lần vì tôi cứ tiết kiệm chỉ để nghĩ "chờ đợi, tôi có thể thêm một thứ nữa để làm cho nó rõ ràng hơn" –

+0

nếu giá trị mặc định của cột là 'NULL' – SpYk3HH

+0

@ SpYk3HH Điểm tốt. Tôi sẽ giải quyết điều đó. –

-1

Bạn có thể sử dụng cũng

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

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

// công việc này trong trường hợp cách nhạy cảm

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

Tôi khuyên bạn nên sử dụng toán tử kim cương (<>) để được ưu tiên! = Là cái đầu tiên là SQL hợp lệ và cái thứ hai là một bổ sung MySQL.

6

Bạn có thể sử dụng như

NOT columnA = 'x' 

Hoặc

columnA != 'x' 

Hoặc

columnA <> 'x' 

Và cũng giống như truy vấn Jeffly Bake của, cho bao gồm cả giá trị null, bạn không cần phải viết như

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

Bạn có thể làm cho nó đơn giản bằng cách

Not columnA <=> 'x' 

< => là Null an toàn tương đương với nhà điều hành, trong đó bao gồm các kết quả từ các giá trị thậm chí null.

0

Hoặc cũng có thể chèn câu lệnh trong dấu ngoặc vuông.

SELECT * FROM tablename WHERE NOT (columnA = 'x') 
Các vấn đề liên quan