MySQL 匹配带有可选 NULL 的 where 子句

标签 mysql

我有 2 个表 - 患者和发行者。 我需要从患者和发行者表中提取整个患者表以及发行者名称。可选地,可能没有患者标识符的发行者。

如果我这样做: 如果相应的患者表行 issuer_of_ Patient_identifier 为 NULL,select * from Patient, Issuer_name where Patients.issuer_of_Patient_identifier=issuer.issuer_id 不会返回任何内容。

我该如何实现这个目标?

mysql> describe patients;
+------------------------------+--------------+------+-----+-------------------+-----------------------------+
| Field                        | Type         | Null | Key | Default           | Extra                       |
+------------------------------+--------------+------+-----+-------------------+-----------------------------+
| patient_id                   | int(11)      | NO   | PRI | NULL              | auto_increment              |
| patient_identifier           | varchar(64)  | YES  | MUL | NULL              |                             |
| issuer_of_patient_identifier | int(11)      | YES  | MUL | NULL              |                             |
| medical_record_locator       | varchar(64)  | YES  |     | NULL              |                             |
| patient_name                 | varchar(128) | NO   | MUL | NULL              |                             |
| birth_date                   | datetime     | YES  |     | NULL              |                             |
| deceased_date                | datetime     | YES  |     | NULL              |                             |
| gender                       | varchar(16)  | YES  |     | NULL              |                             |
| ethnicity                    | varchar(45)  | YES  |     | NULL              |                             |
| date_created                 | datetime     | NO   |     | CURRENT_TIMESTAMP |                             |
| last_update_date             | datetime     | YES  |     | NULL              | on update CURRENT_TIMESTAMP |
| last_updated_by              | varchar(128) | NO   |     | NULL              |                             |
+------------------------------+--------------+------+-----+-------------------+-----------------------------+
12 rows in set (0.00 sec)

mysql> describe issuers;
+------------------+--------------+------+-----+-------------------+-----------------------------+
| Field            | Type         | Null | Key | Default           | Extra                       |
+------------------+--------------+------+-----+-------------------+-----------------------------+
| issuer_id        | int(11)      | NO   | PRI | NULL              | auto_increment              |
| issuer_name      | varchar(64)  | NO   | MUL | NULL              |                             |
| issuer_uid       | varchar(128) | YES  |     | NULL              |                             |
| issuer_uid_type  | varchar(64)  | YES  |     | NULL              |                             |
| date_created     | datetime     | NO   |     | CURRENT_TIMESTAMP |                             |
| last_update_date | datetime     | YES  |     | NULL              | on update CURRENT_TIMESTAMP |
| last_updated_by  | varchar(128) | NO   |     | NULL              |                             |
+------------------+--------------+------+-----+-------------------+-----------------------------+

最佳答案

查询是

select * from patients 
LEFT JOIN issuer_name ON 
patients.issuer_of_patient_identifier = issuer.issuer_id

没有连接:

select * from patients, issuer_name
where patients.issuer_of_patient_identifier = issuer.issuer_id
OR patients.issuer_of_patient_identifier IS NULL

关于MySQL 匹配带有可选 NULL 的 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46196582/

相关文章:

PHP OOP - 实现 2 个类的最佳方法

java - Spring数据JDBC : Required identifier property not found for a MappedCollection

php - 如何使用 laravel 将一个表的内容传输到另一个数据库表

php - 将音频文件从我的家用电脑流式传输到我的网站

mysql - 当 MySQL 查询的 JSON 输出超过 1026 字节时,不显示数据

python - 在 Python 中从列表迭代插入表值

MySQL LOAD DATA INFILE 不一致字段

mysql - Sqlite3 vs Postgres vs Mysql - Rails

mysql - 如何在具有特定别名的表上正确选择 MySql 函数值?

mysql - 如何使用ios在mysql数据库中插入 '&'?