Bởi Guatebus vào ngày 11 tháng 9 năm 2009 lúc 18:22 UTC
Xin chào, bất cứ ai cũng có thể giải thích những gì mà %D và ' %S' có nghĩa là gì trong truy vấn MySQL như thế này:
SELECT table_name AS alias
1Bất kỳ tài liệu liên quan cũng sẽ được giúp đỡ rất nhiều. Tìm kiếm trên web, nhưng không tìm thấy nhiều. Truy vấn này đến từ Drupal từ tài liệu API [//api.drupal.org/api/drupal/developer ---topics ---forms_api.html/5]
This query comes from the drupal from api documentation
[//api.drupal.org/api/drupal/developer--topics--forms_api.html/5]
Cảm ơn vì bất kì sự giúp đỡ
Tôi hiện đang làm việc trong một dự án yêu cầu tôi nhìn vào mã elses, tôi vẫn chưa quen với một số thứ này và có một cái gì đó mà tôi không hiểu được vì vậy đã hy vọng ai đó có thể làm sáng tỏ mã thực sự là gì Làm hay nó có nghĩa là gì?
Đây là tuyên bố trong câu hỏi:
select s.* from $tableA n, $tableB s where
n.id='$send' and
n.status='$status' and
n.field=s.id";
Tôi hiểu rằng xuống những điều cơ bản, tuyên bố này đang nhận được tất cả các trường từ Tablea và Tableb Tôi không chắc chắn
SELECT table_name AS alias
2 làm gì hoặc SELECT table_name AS alias
3 làm gì trong tuyên bố này? Họ chỉ đơn giản là có định danh hay tôi hoàn toàn sai theo cách này? Tôi rất vui khi cung cấp thêm thông tin nếu cần thiết.Được hỏi ngày 29 tháng 9 năm 2015 lúc 15:01Sep 29, 2015 at 15:01
2
Chúng được gọi là
SELECT table_name AS alias
4 và về cơ bản là các tên tạm thời mà bạn đặt cho các bảng để có khả năng đọc tốt hơn khi bạn sử dụng tên bảng để chỉ định một cột.Trong ví dụ của bạn
SELECT s.* FROM $tableA n, $tableB s
WHERE n.id='$send'
AND n.status='$status'
AND n.field=s.id ;
giống như
SELECT $tableB.* FROM $tableA, $tableB
WHERE $tableA.id='$send'
AND $tableA.status = '$status'
AND $tableA.field = $tableB.id ;
Nhưng rõ ràng nó dễ đọc hơn.
Các bí danh bảng thậm chí còn hữu ích hơn khi bạn tham gia nhiều bảng hơn và hoàn toàn bắt buộc khi bạn tự tham gia.
Cú pháp Lưu ý:
Bạn có thể hoặc bạn không được sử dụng từ khóa
SELECT table_name AS alias
5 khi bí danh một bảng.SELECT table_name AS alias
giống như
SELECT table_name alias
Nhưng rõ ràng nó dễ đọc hơn.
Các bí danh bảng thậm chí còn hữu ích hơn khi bạn tham gia nhiều bảng hơn và hoàn toàn bắt buộc khi bạn tự tham gia.Sep 29, 2015 at 15:14
Cú pháp Lưu ý:StoYan
Bạn có thể hoặc bạn không được sử dụng từ khóa
5 khi bí danh một bảng.2 silver badges10 bronze badgesSELECT table_name AS alias
2
13.2.10 & NBSP; Chọn câu lệnh
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr] ...
[into_option]
[FROM table_references
[PARTITION partition_list]]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS [window_spec]
[, window_name AS [window_spec]] ...]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[into_option]
[FOR {UPDATE | SHARE}
[OF tbl_name [, tbl_name] ...]
[NOWAIT | SKIP LOCKED]
| LOCK IN SHARE MODE]
[into_option]
into_option: {
INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name] ...
}
SELECT table_name AS alias
7 được sử dụng để truy xuất các hàng được chọn từ một hoặc nhiều bảng và có thể bao gồm các hoạt động và các nghiên cứu phụ. Bắt đầu với các hoạt động MySQL 8.0.31, SELECT table_name AS alias
9 và SELECT table_name alias
0 cũng được hỗ trợ. Các toán tử SELECT table_name AS alias
8, SELECT table_name AS alias
9 và SELECT table_name alias
0 được mô tả chi tiết hơn sau này trong phần này. Xem thêm Phần & NBSP; 13.2.11, Sub Subqueries.Một câu lệnh
SELECT table_name AS alias
7 có thể bắt đầu với mệnh đề SELECT table_name alias
5 để xác định các biểu thức bảng phổ biến có thể truy cập trong SELECT table_name AS alias
7. Xem phần & nbsp; 13.2.15, với [biểu thức bảng phổ biến].Các mệnh đề được sử dụng phổ biến nhất của các câu lệnh
SELECT table_name AS alias
7 là sau đây:Mỗi
8 chỉ ra một cột mà bạn muốn truy xuất. Phải có ít nhất mộtSELECT table_name alias
8.SELECT table_name alias
0 chỉ ra bảng hoặc bảng để lấy lại hàng. Cú pháp của nó được mô tả trong Phần & NBSP; 13.2.10.2, Điều khoản tham gia.SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
7 Hỗ trợ lựa chọn phân vùng rõ ràng bằng mệnh đềSELECT table_name AS alias
2 với danh sách các phân vùng hoặc phân vùng [hoặc cả hai] theo tên của bảng trongSELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
3 [xem Phần & NBSP; 13.2.10.2, Điều khoản tham gia. Trong trường hợp này, các hàng chỉ được chọn từ các phân vùng được liệt kê và bất kỳ phân vùng nào khác của bảng đều bị bỏ qua. Để biết thêm thông tin và ví dụ, xem Phần & NBSP; 24.5, Lựa chọn phân vùng.SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
Điều khoản
4, nếu được đưa ra, chỉ ra điều kiện hoặc điều kiện các hàng phải thỏa mãn để được chọn.SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
5 là một biểu thức đánh giá đúng cho mỗi hàng được chọn. Tuyên bố chọn tất cả các hàng nếu không có mệnh đềSELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
4.SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
Trong biểu thức
4, bạn có thể sử dụng bất kỳ chức năng và toán tử nào mà MySQL hỗ trợ, ngoại trừ các hàm tổng hợp [nhóm]. Xem Phần & NBSP; 9.5, Biểu thức, và Chương & NBSP; 12, các chức năng và toán tử.SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
SELECT table_name AS alias
7 cũng có thể được sử dụng để truy xuất các hàng được tính toán mà không cần tham chiếu đến bất kỳ bảng nào.Ví dụ:
mysql> SELECT 1 + 1;
-> 2
Bạn được phép chỉ định
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr] ...
[into_option]
[FROM table_references
[PARTITION partition_list]]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS [window_spec]
[, window_name AS [window_spec]] ...]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[into_option]
[FOR {UPDATE | SHARE}
[OF tbl_name [, tbl_name] ...]
[NOWAIT | SKIP LOCKED]
| LOCK IN SHARE MODE]
[into_option]
into_option: {
INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name] ...
}
9 là tên bảng giả trong các tình huống không có bảng nào được tham chiếu:mysql> SELECT 1 + 1 FROM DUAL;
-> 2
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr] ...
[into_option]
[FROM table_references
[PARTITION partition_list]]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS [window_spec]
[, window_name AS [window_spec]] ...]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[into_option]
[FOR {UPDATE | SHARE}
[OF tbl_name [, tbl_name] ...]
[NOWAIT | SKIP LOCKED]
| LOCK IN SHARE MODE]
[into_option]
into_option: {
INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name] ...
}
9 hoàn toàn là để thuận tiện cho những người yêu cầu tất cả các tuyên bố SELECT table_name AS alias
7 nên có mysql> SELECT 1 + 1;
-> 2
2 và có thể các điều khoản khác. MySQL có thể bỏ qua các điều khoản. MySQL không yêu cầu mysql> SELECT 1 + 1;
-> 2
3 nếu không có bảng nào được tham chiếu.Nói chung, các mệnh đề được sử dụng phải được đưa ra theo chính xác thứ tự được hiển thị trong mô tả cú pháp. Ví dụ, mệnh đề
mysql> SELECT 1 + 1;
-> 2
4 phải đến sau bất kỳ mệnh đề mysql> SELECT 1 + 1;
-> 2
5 nào và trước bất kỳ mệnh đề mysql> SELECT 1 + 1;
-> 2
6 nào. Điều khoản mysql> SELECT 1 + 1;
-> 2
7, nếu có, có thể xuất hiện ở bất kỳ vị trí nào được chỉ định bởi mô tả cú pháp, nhưng trong một câu lệnh nhất định chỉ có thể xuất hiện một lần, không phải ở nhiều vị trí. Để biết thêm thông tin về mysql> SELECT 1 + 1;
-> 2
7, xem Phần & NBSP; 13.2.10.1, Chọn Chọn ... vào câu lệnh.Danh sách các điều khoản
SELECT table_name alias
8 bao gồm danh sách chọn cho biết cột nào cần truy xuất. Điều khoản chỉ định một cột hoặc biểu thức hoặc có thể sử dụng ____ 70-Shorthand:Một danh sách chọn chỉ có thể sử dụng một danh sách bao gồm một
0 không đủ tiêu chuẩn để chọn tất cả các cột từ tất cả các bảng:mysql> SELECT 1 + 1 FROM DUAL; -> 2
SELECT * FROM t1 INNER JOIN t2 ...
________ 72.* Có thể được sử dụng làm tốc ký đủ điều kiện để chọn tất cả các cột từ bảng có tên:
SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
Nếu một bảng có các cột vô hình,
0 và ________ 72.* Không bao gồm chúng. Để được bao gồm, các cột vô hình phải được tham chiếu rõ ràng.mysql> SELECT 1 + 1 FROM DUAL; -> 2
Việc sử dụng
0 không đủ tiêu chuẩn với các mục khác trong danh sách chọn có thể tạo ra lỗi phân tích cú pháp. Ví dụ:mysql> SELECT 1 + 1 FROM DUAL; -> 2
0SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Để tránh vấn đề này, hãy sử dụng ________ 72.* Tài liệu tham khảo:
1SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Sử dụng đủ điều kiện ________ 72.* Tài liệu tham khảo cho mỗi bảng trong danh sách chọn:
2SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Danh sách sau đây cung cấp thông tin bổ sung về các điều khoản
SELECT table_name AS alias
7 khác:Một
8 có thể được cung cấp một bí danh bằng cách sử dụngSELECT table_name alias
0. Bí danh được sử dụng làm tên cột của biểu thức và có thể được sử dụng trong các mệnh đềSELECT * FROM t1 INNER JOIN t2 ...
5,mysql> SELECT 1 + 1; -> 2
2 hoặcSELECT * FROM t1 INNER JOIN t2 ...
4. Ví dụ:mysql> SELECT 1 + 1; -> 2
3SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Từ khóa
5 là tùy chọn khi răng cưaSELECT table_name AS alias
8 với một định danh. Ví dụ trước có thể đã được viết như thế này:SELECT table_name alias
4SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Tuy nhiên, vì
5 là tùy chọn, một vấn đề tinh tế có thể xảy ra nếu bạn quên dấu phẩy giữa hai biểu thứcSELECT table_name AS alias
8: MySQL diễn giải cái thứ hai là tên bí danh. Ví dụ: trong tuyên bố sau,SELECT table_name alias
8 được coi là tên bí danh:SELECT * FROM t1 INNER JOIN t2 ...
5SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Vì lý do này, việc sử dụng
5 là tốt khi chỉ định các bí danh cột.SELECT table_name AS alias
Không được phép tham khảo bí danh cột trong mệnh đề
4, vì giá trị cột có thể chưa được xác định khi mệnh đềSELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
4 được thực thi. Xem phần & nbsp; B.3.4.4, Các vấn đề về các bí danh cột.SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
Điều khoản từ
0 chỉ ra bảng hoặc bảng để lấy lại hàng. Nếu bạn đặt tên nhiều hơn một bảng, bạn đang thực hiện tham gia. Để biết thông tin về Cú pháp tham gia, xem Phần & NBSP; 13.2.10.2, Lệnh tham gia. Đối với mỗi bảng được chỉ định, bạn có thể chỉ định một bí danh.SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
FROM
clause indicates the table or tables from which to retrieve rows. If you name more than one table, you are performing a join. For information on join syntax, see Section 13.2.10.2, “JOIN Clause”. For each table specified, you can optionally specify an alias.
0SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
6SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Việc sử dụng các gợi ý chỉ mục cung cấp cho trình tối ưu hóa thông tin về cách chọn các chỉ mục trong quá trình xử lý truy vấn. Để biết mô tả về cú pháp để chỉ định các gợi ý này, xem Phần & NBSP; 8.9.4, Gợi ý chỉ số.
Bạn có thể sử dụng
3 như một cách khác để buộc MySQL thích quét chính thay vì quét bảng. Xem Phần & NBSP; 5.1.8, Biến hệ thống máy chủ của Cameron.SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
Bạn có thể tham khảo một bảng trong cơ sở dữ liệu mặc định là
4 hoặc AS ________ 95 .__ 94 để chỉ định cơ sở dữ liệu một cách rõ ràng. Bạn có thể tham khảo một cột làSELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
7, ________ 94 .________ 97 hoặc ________ 95 .________ 94 .________ 97. Bạn không cần chỉ định một tiền tốSELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
4 hoặc ____ 95 .____ 94 cho một tham chiếu cột trừ khi tham chiếu sẽ không rõ ràng. Xem Phần & NBSP; 9.2.2, Vòng loại định danh của Hồi giáo, để biết các ví dụ về sự mơ hồ yêu cầu các biểu mẫu tham chiếu cột rõ ràng hơn.SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
Một tham chiếu bảng có thể được đặt bí danh bằng cách sử dụng
2 làmysql> SELECT 1 + 1 FROM DUAL; -> 2
07 hoặcSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
08. Những tuyên bố này tương đương:SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
7SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
-
Các cột được chọn cho đầu ra có thể được đề cập trong các mệnh đề
2 vàSELECT * FROM t1 INNER JOIN t2 ...
5 bằng tên cột, bí danh cột hoặc vị trí cột. Vị trí cột là số nguyên và bắt đầu với 1:mysql> SELECT 1 + 1; -> 2
8SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Để sắp xếp theo thứ tự ngược lại, hãy thêm từ khóa
11 [giảm dần] vào tên của cột trong mệnh đềSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
2 mà bạn đang sắp xếp. Mặc định là thứ tự tăng dần; Điều này có thể được chỉ định rõ ràng bằng cách sử dụng từ khóaSELECT * FROM t1 INNER JOIN t2 ...
13.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Nếu
2 xảy ra trong biểu thức truy vấn được đặt dấu ngoặc đơn và cũng được áp dụng trong truy vấn bên ngoài, kết quả không được xác định và có thể thay đổi trong phiên bản tương lai của MySQL.SELECT * FROM t1 INNER JOIN t2 ...
Việc sử dụng các vị trí cột được không dùng nữa vì cú pháp đã bị xóa khỏi tiêu chuẩn SQL.
Trước MySQL 8.0.13, MySQL đã hỗ trợ tiện ích mở rộng cú pháp không tiêu chuẩn cho phép các nhà thiết kế rõ ràng
13 hoặcSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
11 cho các cộtSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
17. MySQL 8.0.12 và sau đó hỗ trợSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
2 với các chức năng nhóm để việc sử dụng tiện ích mở rộng này không còn cần thiết nữa. .SELECT * FROM t1 INNER JOIN t2 ...
9SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Kể từ MySQL 8.0.13, tiện ích mở rộng
5 không còn được hỗ trợ:mysql> SELECT 1 + 1; -> 2
13 hoặcSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
11 Người chỉ định cho các cộtSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
17 không được phép.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Khi bạn sử dụng
2 hoặcSELECT * FROM t1 INNER JOIN t2 ...
17 để sắp xếp một cột trongSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
7, máy chủ sẽ sắp xếp các giá trị chỉ sử dụng số byte ban đầu được biểu thị bởi biến hệ thốngSELECT table_name AS alias
27.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
MySQL mở rộng việc sử dụng
5 để cho phép chọn các trường không được đề cập trong Điều khoảnmysql> SELECT 1 + 1; -> 2
17. Nếu bạn không nhận được kết quả mà bạn mong đợi từ truy vấn của mình, vui lòng đọc mô tả củaSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
5 được tìm thấy trong Phần & NBSP; 12.20, các chức năng tổng hợp.mysql> SELECT 1 + 1; -> 2
5 cho phép một công cụ sửa đổimysql> SELECT 1 + 1; -> 2
32. Xem Phần & NBSP; 12.20.2, Nhóm của các công cụ sửa đổi.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Trước đây, nó không được phép sử dụng
33 trong một truy vấn có công cụ sửa đổiSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
32. Hạn chế này được dỡ bỏ kể từ MySQL 8.0.12. Xem Phần & NBSP; 12.20.2, Nhóm của các công cụ sửa đổi.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Điều khoản
4, giống như mệnh đềmysql> SELECT 1 + 1; -> 2
4, chỉ định các điều kiện lựa chọn. Điều khoảnSELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
4 chỉ định các điều kiện trên các cột trong danh sách chọn, nhưng không thể tham khảo các hàm tổng hợp. Điều khoảnSELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
4 chỉ định các điều kiện trên các nhóm, thường được hình thành bởi mệnh đềmysql> SELECT 1 + 1; -> 2
5. Kết quả truy vấn chỉ bao gồm các nhóm thỏa mãn các điều kiệnmysql> SELECT 1 + 1; -> 2
4. [Nếu không cómysql> SELECT 1 + 1; -> 2
5, tất cả các hàng hoàn toàn tạo thành một nhóm tổng hợp duy nhất.]mysql> SELECT 1 + 1; -> 2
Điều khoản
4 được áp dụng gần như cuối cùng, ngay trước khi các mục được gửi đến máy khách, không có tối ưu hóa. [mysql> SELECT 1 + 1; -> 2
43 được áp dụng sauSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
4.]mysql> SELECT 1 + 1; -> 2
Tiêu chuẩn SQL yêu cầu
4 chỉ phải tham chiếu các cột trong mệnh đềmysql> SELECT 1 + 1; -> 2
5 hoặc các cột được sử dụng trong các hàm tổng hợp. Tuy nhiên, MySQL hỗ trợ một phần mở rộng cho hành vi này và cho phépmysql> SELECT 1 + 1; -> 2
4 tham khảo các cột trong danh sáchmysql> SELECT 1 + 1; -> 2
7 và các cột ở các nhóm phụ bên ngoài.SELECT table_name AS alias
Nếu mệnh đề
4 đề cập đến một cột mơ hồ, một cảnh báo xảy ra. Trong tuyên bố sau,mysql> SELECT 1 + 1; -> 2
50 không rõ ràng vì nó được sử dụng như cả bí danh và tên cột:SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
0SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Ưu tiên được đưa ra cho hành vi SQL tiêu chuẩn, vì vậy nếu tên cột
4 được sử dụng cả trongmysql> SELECT 1 + 1; -> 2
5 và làm cột bí danh trong danh sách cột Chọn, ưu tiên được đưa ra cho cột trong cộtmysql> SELECT 1 + 1; -> 2
5.mysql> SELECT 1 + 1; -> 2
Không sử dụng
4 cho các mục nên nằm trong mệnh đềmysql> SELECT 1 + 1; -> 2
4. Ví dụ: không viết như sau:SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
1SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Viết cái này thay thế:
2SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Điều khoản
4 có thể đề cập đến các hàm tổng hợp, mà mệnh đềmysql> SELECT 1 + 1; -> 2
4 không thể:SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
3SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
[Điều này không hoạt động trong một số phiên bản cũ của MySQL.]
MySQL cho phép tên cột trùng lặp. Đó là, có thể có nhiều hơn một
8 có cùng tên. Đây là một phần mở rộng cho SQL tiêu chuẩn. Vì MySQL cũng cho phépSELECT table_name alias
5 vàmysql> SELECT 1 + 1; -> 2
4 chỉ các giá trịmysql> SELECT 1 + 1; -> 2
8, điều này có thể dẫn đến sự mơ hồ:SELECT table_name alias
4SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Trong tuyên bố đó, cả hai cột đều có tên
62. Để đảm bảo rằng cột chính xác được sử dụng để nhóm, sử dụng các tên khác nhau cho mỗiSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
8.SELECT table_name alias
Điều khoản
64, nếu có, định nghĩa các cửa sổ có tên có thể được đề cập bởi các chức năng cửa sổ. Để biết chi tiết, xem Phần & NBSP; 12.21.4, có tên Windows Windows.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
MySQL giải quyết các tham chiếu cột hoặc bí danh không đủ tiêu chuẩn trong các mệnh đề
2 bằng cách tìm kiếm trong các giá trịSELECT * FROM t1 INNER JOIN t2 ...
8, sau đó trong các cột của các bảng trong mệnh đềSELECT table_name alias
2. Đối với các điều khoảnmysql> SELECT 1 + 1; -> 2
5 hoặcmysql> SELECT 1 + 1; -> 2
4, nó tìm kiếm mệnh đềmysql> SELECT 1 + 1; -> 2
2 trước khi tìm kiếm trong các giá trịmysql> SELECT 1 + 1; -> 2
8. .SELECT table_name alias
Điều khoản
43 có thể được sử dụng để hạn chế số lượng hàng được trả về bởi câu lệnhSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
7.SELECT table_name AS alias
43 có một hoặc hai đối số số, cả hai phải là hằng số nguyên không âm, với các ngoại lệ này:SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Trong các câu lệnh đã chuẩn bị, các tham số
43 có thể được chỉ định bằng cách sử dụng các dấu hiệu giữ chỗSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
79.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Trong các chương trình được lưu trữ, các tham số
43 có thể được chỉ định bằng cách sử dụng các tham số thường quy có giá trị nguyên hoặc các biến cục bộ.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Với hai đối số, đối số đầu tiên chỉ định độ lệch của hàng đầu tiên để quay lại và thứ hai chỉ định số lượng hàng tối đa để trả về. Phần bù của hàng ban đầu là 0 [không phải 1]:
5SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Để lấy tất cả các hàng từ một phần bù nhất định cho đến cuối tập kết quả, bạn có thể sử dụng một số số lớn cho tham số thứ hai. Tuyên bố này lấy tất cả các hàng từ hàng thứ 96 đến cuối cùng:
6SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Với một đối số, giá trị chỉ định số lượng hàng để trả về từ đầu tập kết quả:
7SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Nói cách khác,
81 tương đương vớiSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
82.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Đối với các tuyên bố đã chuẩn bị, bạn có thể sử dụng trình giữ chỗ. Các câu sau đây trả về một hàng từ bảng
83:SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
8SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Các câu sau đây trả lại các hàng thứ hai đến thứ sáu từ bảng
83:SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
9SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Để tương thích với PostgreSQL, MySQL cũng hỗ trợ cú pháp bù
85SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
86.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Nếu
43 xảy ra trong biểu thức truy vấn được đặt dấu ngoặc đơn và cũng được áp dụng trong truy vấn bên ngoài, kết quả không được xác định và có thể thay đổi trong phiên bản tương lai của MySQL.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Mẫu
88 củaSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
7 cho phép kết quả truy vấn được ghi vào tệp hoặc được lưu trữ trong các biến. Để biết thêm thông tin, xem Phần & NBSP; 13.2.10.1, Chọn chọn ... vào câu lệnh.SELECT table_name AS alias
Nếu bạn sử dụng
90 với công cụ lưu trữ sử dụng khóa trang hoặc hàng, các hàng được kiểm tra bởi truy vấn được ghi lại cho đến khi kết thúc giao dịch hiện tại.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Bạn không thể sử dụng
90 như một phần củaSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
7 trong một tuyên bố nhưSELECT table_name AS alias
93 Chọn ... từSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
94 .... [Nếu bạn cố gắng làm như vậy, câu lệnh bị từ chối với lỗi không thể cập nhật bảng 'SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
94' trong khi 'SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
96 'đang được tạo ra.]Can't update table 'SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
94' while 'SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
96' is being created.]SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
97 vàSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
98 Đặt các khóa được chia sẻ cho phép các giao dịch khác đọc các hàng được kiểm tra nhưng không cập nhật hoặc xóa chúng.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
97 vàSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
98 là tương đương. Tuy nhiên,SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
01, nhưSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
90, hỗ trợ các tùy chọnSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
03,SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
04 và củaSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
4.SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
97 là một sự thay thế choSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
07, nhưngSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
08 vẫn có sẵn để tương thích ngược.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
OF
options.
4SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
97 is a replacement forSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
07, butSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
08 remains available for backward compatibility.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
03 gây ra truy vấnSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
10 hoặcSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
97 để thực thi ngay lập tức, trả lại lỗi nếu không thể thu được khóa hàng do khóa được giữ bởi một giao dịch khác.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
04 gây ra truy vấnSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
10 hoặcSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
97 để thực thi ngay lập tức, không bao gồm các hàng từ tập kết quả bị khóa bởi một giao dịch khác.SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
Các tùy chọn
03 vàSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
04 không an toàn cho sao chép dựa trên tuyên bố.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Ghi chú
Các truy vấn bỏ qua các hàng bị khóa trả về một cái nhìn không nhất quán của dữ liệu. Do đó,
04 không phù hợp với công việc giao dịch nói chung. Tuy nhiên, nó có thể được sử dụng để tránh sự tranh chấp khóa khi nhiều phiên truy cập vào cùng một bảng giống như hàng đợi.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Của
applies
4 áp dụng các truy vấnSELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
90 vàSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
01 cho các bảng được đặt tên. Ví dụ:SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
90 andSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
01 queries to named tables. For example:SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
0SELECT table_name AS alias
Tất cả các bảng được tham chiếu bởi khối truy vấn đều bị khóa khi
4 bị bỏ qua. Do đó, sử dụng mệnh đề khóa mà không cóSELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
4 kết hợp với một mệnh đề khóa khác trả về một lỗi. Chỉ định cùng một bảng trong nhiều điều khoản khóa trả về một lỗi. Nếu bí danh được chỉ định là tên bảng trong câu lệnhSELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
7, mệnh đề khóa chỉ có thể sử dụng bí danh. Nếu câu lệnhSELECT table_name AS alias
7 không chỉ định bí danh một cách rõ ràng, mệnh đề khóa chỉ có thể chỉ định tên bảng thực tế.SELECT table_name AS alias
OF
is omitted. Consequently, using a locking clause without
4SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
OF
in combination with another locking clause returns an error. Specifying the same table in multiple locking clauses returns an error. If an alias is specified as the table name in the
4SELECT t1.*, t2.* FROM t1 INNER JOIN t2 ...
7 statement, a locking clause may only use the alias. If theSELECT table_name AS alias
7 statement does not specify an alias explicitly, the locking clause may only specify the actual table name.SELECT table_name AS alias
Để biết thêm thông tin về
90 vàSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
97, xem Phần & NBSP; 15.7.2.4, Khóa khóa đọc. Để biết thêm thông tin về các tùy chọnSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
03 vàSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
28, hãy xem khóa đọc đồng thời với Nowait và Bỏ qua bị khóa.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Theo từ khóa
SELECT table_name AS alias
7, bạn có thể sử dụng một số công cụ sửa đổi ảnh hưởng đến hoạt động của câu lệnh. SELECT $tableB.* FROM $tableA, $tableB
WHERE $tableA.id='$send'
AND $tableA.status = '$status'
AND $tableA.field = $tableB.id ;
30, SELECT $tableB.* FROM $tableA, $tableB
WHERE $tableA.id='$send'
AND $tableA.status = '$status'
AND $tableA.field = $tableB.id ;
31 và các công cụ sửa đổi bắt đầu bằng SELECT $tableB.* FROM $tableA, $tableB
WHERE $tableA.id='$send'
AND $tableA.status = '$status'
AND $tableA.field = $tableB.id ;
32 là các phần mở rộng MySQL cho SQL tiêu chuẩn.Bộ điều chỉnh
33 vàSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
34 chỉ định xem các hàng trùng lặp có nên được trả về hay không.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
33 [mặc định] chỉ định rằng tất cả các hàng phù hợp phải được trả về, bao gồm cả các bản sao.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
34 Chỉ định loại bỏ các hàng trùng lặp khỏi tập kết quả. Đó là một lỗi để chỉ định cả hai công cụ sửa đổi.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
37 là một từ đồng nghĩa vớiSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
34.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Trong MySQL 8.0.12 trở lên,
34 có thể được sử dụng với một truy vấn cũng sử dụngSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
32. [Lỗi #87450, lỗi #26640100]SELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
30 dành ưu tiên cao hơnSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
7 so với câu lệnh cập nhật bảng. Bạn chỉ nên sử dụng điều này cho các truy vấn rất nhanh và phải được thực hiện cùng một lúc. Truy vấnSELECT table_name AS alias
43 được phát hành trong khi bảng bị khóa để đọc các lần chạy ngay cả khi có câu lệnh cập nhật đang chờ bảng miễn phí. Điều này chỉ ảnh hưởng đến các công cụ lưu trữ chỉ sử dụng khóa cấp bảng [chẳng hạn nhưSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
44,SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
45 vàSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
46].SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
30 không thể được sử dụng với các câu lệnhSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
7 là một phần củaSELECT table_name AS alias
8.SELECT table_name AS alias
31 buộc trình tối ưu hóa tham gia các bảng theo thứ tự chúng được liệt kê trong mệnh đềSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
2. Bạn có thể sử dụng điều này để tăng tốc một truy vấn nếu trình tối ưu hóa tham gia các bảng theo thứ tự không tối ưu.mysql> SELECT 1 + 1; -> 2
31 cũng có thể được sử dụng trong danh sáchSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
0. Xem Phần & NBSP; 13.2.10.2, Lệnh tham gia mệnh đề.SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS [window_spec] [, window_name AS [window_spec]] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [into_option] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE] [into_option] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }
31 không áp dụng cho bất kỳ bảng nào mà trình tối ưu hóa coi là bảngSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
55 hoặcSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
56. Một bảng như vậy tạo ra một hàng duy nhất, được đọc trong giai đoạn tối ưu hóa thực thi truy vấn và các tham chiếu đến các cột của nó được thay thế bằng các giá trị cột thích hợp trước khi tiến hành thực thi truy vấn. Các bảng này xuất hiện đầu tiên trong gói truy vấn được hiển thị bởiSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
57. Xem Phần & NBSP; 8.8.1, Tối ưu hóa các truy vấn với giải thích. Ngoại lệ này có thể không áp dụng cho các bảngSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
55 hoặcSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
56 được sử dụng ở phía được bổ sung ____ 260 của một tham gia bên ngoài [nghĩa là bảng bên phải củaSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
61 hoặc bảng bên trái củaSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
62.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
63 hoặcSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
64 có thể được sử dụng vớiSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
5 hoặcmysql> SELECT 1 + 1; -> 2
34 để nói với trình tối ưu hóa rằng tập kết quả có nhiều hàng hoặc nhỏ, tương ứng. Đối vớiSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
63, MySQL trực tiếp sử dụng các bảng tạm thời dựa trên đĩa nếu chúng được tạo và thích sắp xếp để sử dụng bảng tạm thời có khóa trên các phần tửSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
5. Đối vớimysql> SELECT 1 + 1; -> 2
64, MySQL sử dụng các bảng tạm thời trong bộ nhớ để lưu trữ bảng kết quả thay vì sử dụng sắp xếp. Điều này thường không cần thiết.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
70 buộc kết quả sẽ được đưa vào một bảng tạm thời. Điều này giúp MySQL giải phóng các khóa bàn sớm và giúp trong trường hợp mất nhiều thời gian để gửi kết quả được đặt cho máy khách. Công cụ sửa đổi này chỉ có thể được sử dụng cho các câu lệnhSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
7 cấp cao nhất, không phải cho các mục tiêu phụ hoặc theo sauSELECT table_name AS alias
8.SELECT table_name AS alias
73 bảo MySQL tính toán có bao nhiêu hàng trong tập kết quả, coi thường bất kỳ mệnh đềSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
43 nào. Số lượng hàng sau đó có thể được lấy bằngSELECT s.* FROM $tableA n, $tableB s WHERE n.id='$send' AND n.status='$status' AND n.field=s.id ;
75. Xem Phần & NBSP; 12.16, Chức năng thông tin của Google.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Ghi chú
Công cụ sửa đổi truy vấn
73 và hàmSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
77 đi kèm được không dùng nữa kể từ MySQL 8.0.17; Hy vọng chúng sẽ bị xóa trong một phiên bản tương lai của MySQL. Xem mô tảSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
77 để biết thông tin về một chiến lược thay thế.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
Bộ điều chỉnh
79 vàSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
80 đã được sử dụng với bộ đệm truy vấn trước MySQL 8.0. Bộ đệm truy vấn đã được xóa trong MySQL 8.0. Bộ điều chỉnhSELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
79 cũng đã được xóa.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;
80 không được chấp nhận và không có tác dụng; Hy vọng nó sẽ được loại bỏ trong một bản phát hành MySQL trong tương lai.SELECT $tableB.* FROM $tableA, $tableB WHERE $tableA.id='$send' AND $tableA.status = '$status' AND $tableA.field = $tableB.id ;